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; }
/** * 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); }
void HW1b::setToTwist(int state){ m_checkBoxTwist->setChecked(state); m_point.clear(); initPoint(); updateGL(); }
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(); }
void initCircle (void) { initPoint(); if (! Circle) Circle = new(PointClass, "Circle", Point, sizeof(struct Circle), ctor, Circle_ctor, draw, Circle_draw, (void *) 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; }
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(); }
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(); }
/** * 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]); }
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; }
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(); }