Exemplo n.º 1
0
int main()
{
  Point *a, *b;
  int x, y, z;
  printf("Digite tres inteiros do primeiro ponto\n");
  scanf("%d %d %d", &x, &y, &z);
  a = initPoint(x, y, z);
  printf("Mais tres inteiros\n");
  scanf("%d %d %d", &x, &y, &z);
  b = initPoint(x, y, z);
  printf("Distancia dos dois pontos: %f", calcDistance(a, b));
  free(a);
  free(b);
  return 0;
}
Exemplo n.º 2
0
 /**
 * Test the modification function
 */
 static void test_modifPoint() {
    Point * p;
    p = initPoint();
    modifyPoint(p, 5., 4.);
    ASSERT_EQUAL_FLOAT(p->x, 5);
    ASSERT_EQUAL_FLOAT(p->y, 4);
    destroyPoint(p);
 }
Exemplo n.º 3
0
void HW1b::setToTwist(int state){

	m_checkBoxTwist->setChecked(state);

	m_point.clear();
	initPoint();
	updateGL();
}
Exemplo n.º 4
0
void
HW1b::initializeGL()
{

	glClearColor(0.0, 0.0, 0.0, 0.0);	// set background color
	glColor3f(1.0, 1.0, 1.0);		// set foreground color

	initPoint();
	
}
Exemplo n.º 5
0
Arquivo: Circle.c Projeto: fdotli/OOC
void initCircle (void) {
	initPoint();

	if (! Circle)
		Circle = new(PointClass,
			"Circle", Point, sizeof(struct Circle),
			ctor, Circle_ctor,
			draw, Circle_draw,
			(void *) 0);
}
Exemplo n.º 6
0
/************
*			*
*Init		*
*			*
************/
PointLight3D* initPointLight()
{
	PointLight3D* light;
	
	light = malloc(sizeof(PointLight3D));
	
	if(NULL == light)
	{
		log_error(LIGHTPOINT_INIT_ERROR);
		return NULL;
	}
	
	light->position = initPoint();
	
	return light;
}
Exemplo n.º 7
0
void HW1b::changeDividing(int value){

	m_subdivide = value;
	m_sliderDividing->blockSignals(true);
	m_sliderDividing->setValue(value);
	m_sliderDividing->blockSignals(false);

	

	m_spinBoxDividing->blockSignals(true);
	m_spinBoxDividing->setValue(value);
	m_spinBoxDividing->blockSignals(false);

	m_point.clear();
	m_color.clear();

	initPoint();
	updateGL();

}
Exemplo n.º 8
0
void HW1b::changeTheta(int angle){

	
	m_sliderTheta->blockSignals(true);
	m_sliderTheta->setValue(angle);
	m_sliderTheta->blockSignals(false);



	m_spinBoxTheta->blockSignals(true);
	m_spinBoxTheta->setValue(angle);
	m_spinBoxTheta->blockSignals(false);




	m_theta = angle * (M_PI / 180);
	m_point.clear();

	initPoint();
	updateGL();
	
}
Exemplo n.º 9
0
/**
 * Test the initialisation function
 */
 static void test_initPoint() {
    Point * p = initPoint();
    ASSERT_EQUAL_FLOAT(p->x, 0);
    ASSERT_EQUAL_FLOAT(p->y, 0);
    destroyPoint(p);
 }
void initPoints(point* s)
{
     
     const int LONGUEUR = 350;
     const int LARGEUR = 200;
     
     int i = 0;

	 
	 s[0] = initPoint(0,0);
     s[3] = initPoint(3*(LONGUEUR/2), 0);
     s[4] = initPoint(3*(LONGUEUR/2), 1.33*LARGEUR/3.33);
     s[7] = initPoint(0, 1.33*LARGEUR/3.33);
   
   
     s[24] = initPoint(-21*(LONGUEUR/4), -7*(LARGEUR/3.33));
     s[27] = initPoint(s[24].coords[0] + 12*LONGUEUR, s[24].coords[1]);
     s[31] = initPoint(s[24].coords[0], (1.33*(LARGEUR/3.33))+7*(LARGEUR/3.33));
     s[28] = initPoint(s[27].coords[0], s[31].coords[1]);
	 
	 

	 while(i <= 24)
	 {

	  s[1+i].coords[0] = (2*s[i].coords[0]+s[i+3].coords[0])/3;
	  s[1+i].coords[1] = (2*s[i].coords[1]+s[i+3].coords[1])/3;
	 
	  s[6+i].coords[0] = (2*s[i+7].coords[0]+s[i+4].coords[0])/3;
	  s[6+i].coords[1] = (2*s[i+7].coords[1]+s[i+4].coords[1])/3;
	 
	 
	  s[2+i].coords[0] = (s[i].coords[0]+2*s[i+3].coords[0])/3;
	  s[2+i].coords[1] = (s[i].coords[1]+2*s[i+3].coords[1])/3;
	 

	  s[5+i].coords[0] = (s[i+7].coords[0]+2*s[i+4].coords[0])/3;
	  s[5+i].coords[1] = (s[i+7].coords[1]+2*s[i+4].coords[1])/3;
	  	  
	  i += 24;
	 }

	 droiteaffine alpha = initDroiteAffine(s[24].coords[1]/s[24].coords[0], &s[0]);
	 droiteaffine gama = initDroiteAffine(-s[24].coords[1]/s[24].coords[0], &s[7]);
	 droiteaffine beta = initDroiteAffine(-s[24].coords[1]/s[24].coords[0], &s[3]);
     droiteaffine delta = initDroiteAffine(s[24].coords[1]/s[24].coords[0], &s[4]);
     
	 
	 
	 s[16].coords[0] = 3*(LONGUEUR/4)-3*LONGUEUR;
	 s[16].coords[1] = getCoordY(alpha, s[16].coords[0]);
	  

	 s[23].coords[0] = s[16].coords[0];
	 s[23].coords[1] = getCoordY(gama, s[16].coords[0]);
	  
 
	 s[8].coords[0] = -3*(LARGEUR/4);
	 s[8].coords[1] = getCoordY(alpha, s[8].coords[0]);
	  
	  
	 s[15].coords[0] = s[8].coords[0];
	 s[15].coords[1] = getCoordY(gama, s[8].coords[0]);
	 
	 	 
	 
	 s[19].coords[0] = s[16].coords[0] + 6*LONGUEUR;
	 s[19].coords[1] = s[16].coords[1];
	  

	 s[20].coords[0] = s[23].coords[0] + 6*LONGUEUR;
	 s[20].coords[1] = s[23].coords[1];
	  
	 
	 s[11].coords[0] = s[8].coords[0] + 3*LONGUEUR;
	 s[11].coords[1] = s[8].coords[1];
	  

	 s[12].coords[0] = s[15].coords[0] + 3*LONGUEUR;
	 s[12].coords[1] = s[15].coords[1];
	 
	 
	 droiteaffine epsilon = initDroiteAffine(-s[25].coords[1]/(s[1].coords[0]-s[25].coords[0]), &s[1]);
	 
	 s[9].coords[0] = s[8].coords[0] + LONGUEUR;
	 s[9].coords[1] = getCoordY(epsilon, s[9].coords[0]);
	 

	 s[17].coords[0] = s[16].coords[0] + 2*LONGUEUR;
	 s[17].coords[1] = getCoordY(epsilon, s[17].coords[0]);
	 
	 
	 droiteaffine teta = initDroiteAffine(s[25].coords[1]/(s[1].coords[0]-s[25].coords[0]), &s[6]);

	 s[14].coords[0] = s[15].coords[0] + LONGUEUR;
	 s[14].coords[1] = getCoordY(teta, s[14].coords[0]);
	 

	 s[22].coords[0] = s[23].coords[0] + 2*LONGUEUR;
	 s[22].coords[1] = getCoordY(teta, s[22].coords[0]);
	 
	 
	 droiteaffine omega = initDroiteAffine(s[25].coords[1]/(s[1].coords[0]-s[25].coords[0]), &s[2]);

	 s[10].coords[0] = s[8].coords[0] + 2*LONGUEUR;
	 s[10].coords[1] = getCoordY(omega, s[10].coords[0]);
	 

	 s[18].coords[0] = s[16].coords[0] + 4*LONGUEUR;
	 s[18].coords[1] = getCoordY(omega, s[18].coords[0]);
	 
	 
	 droiteaffine sigma = initDroiteAffine(-s[25].coords[1]/(s[1].coords[0]-s[25].coords[0]), &s[5]);

	 s[13].coords[0] = s[15].coords[0] + 2*LONGUEUR;
	 s[13].coords[1] = getCoordY(sigma, s[13].coords[0]);
	 

	 s[21].coords[0] = s[23].coords[0] + 4*LONGUEUR;
	 s[21].coords[1] = getCoordY(sigma, s[21].coords[0]);

}
Exemplo n.º 11
0
void Reconstruction::update (vector<Matcher::p_match> p_matched,Matrix Tr,int32_t point_type,int32_t min_track_length,double max_dist,double min_angle) {
  
  // update transformation vector
  Matrix Tr_total_curr;
  if (Tr_total.size()==0) Tr_total_curr = Matrix::inv(Tr);
  else                    Tr_total_curr = Tr_total.back()*Matrix::inv(Tr);
  Tr_total.push_back(Tr_total_curr);
  Tr_inv_total.push_back(Matrix::inv(Tr_total_curr));
  
  // update projection vector
  Matrix P_total_curr = K*Matrix::inv(Tr_total_curr).getMat(0,0,2,3);
  P_total.push_back(P_total_curr);
  
  // current frame
  int32_t current_frame = Tr_total.size() - 1; // 0-based frame number
  
  // create index vector
  int32_t track_idx_max = 0;
  for (vector<Matcher::p_match>::iterator m=p_matched.begin(); m!=p_matched.end(); m++)
    if (m->i1p > track_idx_max)
      track_idx_max = m->i1p;
  for (vector<track>::iterator t=tracks.begin(); t!=tracks.end(); t++)
    if (t->last_idx > track_idx_max)
      track_idx_max = t->last_idx;
  int32_t *track_idx = new int32_t[track_idx_max+1];
  for (int32_t i=0; i<=track_idx_max; i++)
    track_idx[i] = -1;
  for (int32_t i=0; i<tracks.size(); i++)
    track_idx[tracks[i].last_idx] = i;
  
  // associate matches to tracks
  for (vector<Matcher::p_match>::iterator m=p_matched.begin(); m!=p_matched.end(); m++) {
    
    // track index (-1 = no existing track)
    int32_t idx = track_idx[m->i1p];
    
    // add to existing track
    if (idx>=0 && tracks[idx].last_frame==current_frame-1) {
      
      tracks[idx].pixels.push_back(point2d(m->u1c,m->v1c));
      tracks[idx].last_frame = current_frame;
      tracks[idx].last_idx   = m->i1c;
      
    // create new track
    } else {
      track t;
      t.pixels.push_back(point2d(m->u1p,m->v1p));
      t.pixels.push_back(point2d(m->u1c,m->v1c));
      t.first_frame = current_frame-1;
      t.last_frame  = current_frame;
      t.last_idx    = m->i1c;
      tracks.push_back(t);
    }
  }
  
  // copy tracks
  vector<track> tracks_copy = tracks;
  tracks.clear();
  
  // devise tracks into active or reconstruct 3d points
  for (vector<track>::iterator t=tracks_copy.begin(); t!=tracks_copy.end(); t++) {
    
    // track has been extended
    if (t->last_frame==current_frame) {
      
      // push back to active tracks
      tracks.push_back(*t);
      
    // track lost
    } else {
      
      // add to 3d reconstruction
      if (t->pixels.size()>=min_track_length) {
        
        // 3d point
        point3d p;
        
        // try to init point from first and last track frame
        if (initPoint(*t,p)) {
          if (pointType(*t,p)>=point_type)
            if (refinePoint(*t,p))
              if(pointDistance(*t,p)<max_dist && rayAngle(*t,p)>min_angle)
                points.push_back(p);
        }
      }
    }
  }
  
  //cout << "P: " << points.size() << endl;
  //testJacobian();
  
  delete track_idx;
}
Exemplo n.º 12
0
int main(int argc, char *argv[])
{
    int winid;
    struct Msg msg;
    struct Context context;
    //int shell_pid;
    //int finder_pid;
    short isRun = 1;
//    short isInit = 1;
    ClickableManager manager;

    winid = init_context(&context, 800, 600);
    fill_rect(context, 0, 0, context.width, context.height, 0xffff);
//    puts_str(context, "desktop: welcome", 0x0, 0, 0);

    PICNODE pic1, pic2, pic3/*, background*/;
    loadBitmap(&pic1, "music.bmp");
    loadBitmap(&pic2, "setting.bmp");
    loadBitmap(&pic3, "notes.bmp");
    //loadBitmap(&background, "bg.bmp");
    set_icon_alpha(&pic1);
    set_icon_alpha(&pic2);
    set_icon_alpha(&pic3);
//    set_icon_alpha(&pic4);
//
    fill_rect(context, 160, 400, 500, 150, 0x0101);
//    //loadBitmap(&background, "bg.bmp");

    //draw_picture(context, background, 0, 0);
    draw_picture(context, pic1, 225, 450);
    draw_picture(context, pic2, 367, 450);
    draw_picture(context, pic3, 500, 450);
    //draw_iconlist(context, iconlist, sizeof(iconlist) / sizeof(ICON));

    manager = initClickManager(context);
    createClickable(&manager, initRect(225, 450, 75, 75), MSG_DOUBLECLICK, playmusic);
    createClickable(&manager, initRect(367, 450, 75, 75), MSG_DOUBLECLICK, shellinit);
    createClickable(&manager, initRect(500, 450, 75, 75), MSG_DOUBLECLICK, finderinit);

    while(isRun)
    {
        getMsg(&msg);
        switch(msg.msg_type)
        {
            case MSG_UPDATE:
                updateWindow(winid, context.addr);
                //printf(0, "desktop");
                /*if (isInit)
                {
                    finderinit((Point){0, 0});
                    //finderinit((Point){0, 0});
                    //shell_pid = shellinit((Point){context.width / 2, context.height / 2});
                    //shellinit((Point){context.width / 2, context.height / 2});
                    isInit = 0;
                }*/
                break;
            case MSG_PARTIAL_UPDATE:
                updatePartialWindow(winid, context.addr, msg.concrete_msg.msg_partial_update.x1, msg.concrete_msg.msg_partial_update.y1, msg.concrete_msg.msg_partial_update.x2, msg.concrete_msg.msg_partial_update.y2);
                break;
            case MSG_DOUBLECLICK:
                executeHandler(manager.double_click, initPoint(msg.concrete_msg.msg_mouse.x, msg.concrete_msg.msg_mouse.y));
                break;
            default:
                break;
        }
    }

    //int windowId;
    //int result;

    //windowId = createWindow(0, 0, 800, 600);
    //printf(0, "windowId: %d\n", windowId);


    //result = updateWindow(windowId, context.addr);
    //printf(0, "updateResult: %d\n", result);

    free_context(&context, winid);
    exit();
}