Changeset 184 in Sophya
- Timestamp:
- Jan 10, 1999, 5:13:13 PM (27 years ago)
- Location:
- trunk/SophyaPI/PI
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PI/pi3ddrw.cc
r170 r184 26 26 lCO = 10.; dlCO = 3.; 27 27 v3D_obs = false; 28 x Min = yMin = zMin = -1.;29 x Max = yMax = zMax = 1.;28 x3Min = y3Min = z3Min = -1.; 29 x3Max = y3Max = z3Max = 1.; 30 30 } 31 31 … … 84 84 } 85 85 86 86 /* --Methode-- */ 87 void PIDrawer3D::DrawAxes(PIGraphicUC* g) 88 { 89 if (axesFlags == kAxesNone) return; 90 #if defined(__DECCXX) || defined(__KCC__) 91 PIGraphic3D* g3 = dynamic_cast<PIGraphic3D*>(g); 92 #else 93 PIGraphic3D* g3 = (PIGraphic3D*)(g); 94 #endif 95 Draw3DBoxe(g3, XMin3(), XMax3(), YMin3(), YMax3(), ZMin3(), ZMax3(), 96 XMin3(), XMax3(), YMin3(), YMax3(), ZMin3(), ZMax3()); 97 } 98 99 /* --Methode-- */ 100 void PIDrawer3D::Draw3DBoxe(PIGraphic3D* g3, 101 float xx1, float xx2, float yy1, float yy2, 102 float zz1, float zz2, float xl1, float xl2, 103 float yl1, float yl2, float zl1, float zl2) 104 { 105 if (mLAtt == PI_NotDefLineAtt) g3->SelLine(PI_ThinLine); 106 107 PIGrCoord x1,y1,z1,x2,y2,z2; 108 char strg[64]; 109 int k; 110 int NTicks = 5; // Nb de ticks sur chaque axe 111 112 x1 = xx1; y1 = yy1; z1 = zz1; 113 x2 = xx2; y2 = yy1; z2 = zz1; 114 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 115 y1 = y2 = yy2; 116 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 117 z1 = z2 = zz2; 118 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 119 y1 = y2 = yy1; 120 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 121 122 // Trace des ticks et labels axe X : 123 x1 = x2 = xx1; y1 = y2 = yy1; z1 = z2 = zz1; 124 for (k=0; k<NTicks; k++) { 125 x1 = x2 = (xx1+(float)k*(xx2-xx1)/(NTicks-1.)); 126 z1 = zz1; z2 = zz1-0.02*(zz2-zz1); 127 y1 = y2 = yy1; 128 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 129 z2 = zz1-0.05*(zz2-zz1); 130 y2 = yy1-0.075*(yy2-yy1); 131 sprintf(strg,"%.2g", xl1+(float)k*(xl2-xl1)/(NTicks-1.)); 132 g3->DrawString3D(x2, y2, z2, strg); 133 } 134 x2 = xx2+0.075*(xx2-xx1); y2 = yy1; z2 = zz1-0.05*(zz2-zz1); 135 g3->DrawString3D(x2, y2, z2, "X"); 136 137 x1 = xx1; y1 = yy1; z1 = zz1; 138 x2 = xx1; y2 = yy2; z2 = zz1; 139 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 140 x1 = x2 = xx2; 141 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 142 z1 = z2 = zz2; 143 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 144 x1 = x2 = xx1; 145 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 146 x1 = x2 = xx2; y1 = y2 = yy1; z1 = z2 = zz1; 147 for (k=1; k<NTicks; k++) { // Attention, par le tick 0 pour Y 148 y1 = y2 = (yy1+(float)k*(yy2-yy1)/(NTicks-1.)); 149 z2 = zz1-0.02*(zz2-zz1); 150 x1 = x2 = xx2; 151 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 152 z2 = zz1-0.05*(zz2-zz1); 153 x2 = xx2+0.075*(xx2-xx1); 154 sprintf(strg,"%.2g", yl1+(float)k*(yl2-yl1)/(NTicks-1.)); 155 g3->DrawString3D(x2, y2, z2, strg); 156 } 157 x2 = xx2; y2 = yy2+0.075*(yy2-yy1); z2 = zz1-0.05*(zz2-zz1); 158 g3->DrawString3D(x2, y2, z2, "Y"); 159 160 x1 = xx1; y1 = yy1; z1 = zz1; 161 x2 = xx1; y2 = yy1; z2 = zz2; 162 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 163 x1 = x2 = xx2; 164 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 165 y1 = y2 = yy2; 166 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 167 x1 = x2 = xx1; 168 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 169 x1 = x2 = xx1; y1 = y2 = yy1; z1 = z2 = zz1; 170 for (k=0; k<NTicks; k++) { 171 z1 = z2 = (zz1+(float)k*(zz2-zz1)/(NTicks-1.)); 172 y2 = yy1-0.015*(yy2-yy1); 173 x2 = xx1-0.015*(xx2-xx1); 174 g3->DrawLine3D(x1, y1, z1, x2, y2, z2); 175 x2 = xx1-0.1*(xx2-xx1); 176 y2 = yy1-0.1*(yy2-yy1); 177 sprintf(strg,"%.2g", zl1+(float)k*(zl2-zl1)/(NTicks-1.)); 178 g3->DrawString3D(x2, y2, z2, strg); 179 } 180 x2 = xx1-0.075*(xx2-xx1); y2 = yy1-0.075*(yy2-yy1); z2 = zz2+0.05*(zz2-zz1); 181 g3->DrawString3D(x2, y2, z2, "Z"); 182 183 } 87 184 88 185 // ...................................................................... … … 115 212 116 213 mGr3d = new PIGraphic3D(mWGrC, 0, 0, sx, sy); 214 rOfg = false; 215 axfg = true; 216 skcfg = false; 117 217 } 118 218 … … 180 280 else Set3DView(xc, yc, zc, xo, yo, zo, dax, day, dco, psi); 181 281 Refresh(); 182 mBDrw->Refresh(); // ? Pour reecrire par-dessus ce qui a ete efface183 282 } 184 283 … … 226 325 } 227 326 int id = AddDrawer(dr3, false, false, ad); 327 if (m3DrIl.size() == 0) dr3->SetAxesFlags(kStdAxes); 228 328 m3DrIl.push_back(id); 229 329 return(id); … … 256 356 PIDrwTools::ShowPIDrwTools(); // Fentre axes et options de trace 257 357 } 258 } 259 } 358 if (key == 'A' || key == 'a') { // On affiche ou on enleve les axes 359 axfg = !axfg; 360 list<int>::iterator it; 361 if (axfg) 362 for(it = m3DrIl.begin(); it != m3DrIl.end(); it++) 363 GetDrawerId(*it)->SetAxesFlags(kAxesNone); 364 else { 365 it = m3DrIl.begin(); 366 if (it != m3DrIl.end()) GetDrawerId(*it)->SetAxesFlags(kStdAxes); 367 } 368 Refresh(); 369 } 370 // <Alt>S active la sensibilite de la zone centrale pour tourner l'objet 371 if (key == 'S' || key == 's') skcfg = !skcfg; 372 if (key == 'R' || key == 'r') Update3DView(); 373 } 374 } 375 260 376 /* --Methode-- */ 261 377 void PIDraw3DWdg::PasteSelection(unsigned int typ, void *pdata, unsigned int l) … … 291 407 rOfg = false; 292 408 if (kmod == PIKM_Shift) rOfg = true; 293 else {409 else if (skcfg) { 294 410 int dmix = x-XSize()/2; 295 411 int dmiy = y-YSize()/2; … … 361 477 SetDrawers3DView(); 362 478 Refresh(); 363 mBDrw->Refresh();364 479 } 365 480 … … 425 540 SetDrawers3DView(); 426 541 Refresh(); 427 mBDrw->Refresh();428 542 } 429 543 -
trunk/SophyaPI/PI/pi3ddrw.h
r170 r184 31 31 virtual PIGraphicUC* SetDrwWdg(PIBaseWdgGen* drw, int x0, int y0, int dx, int dy, PIGraphicGen* g); 32 32 33 float ZMin() const {return zMin;} 34 float ZMax() const {return zMax;} 33 virtual void DrawAxes(PIGraphicUC* g); 34 virtual void Draw3DBoxe(PIGraphic3D* g3, float xx1, float xx2, float yy1, float yy2, 35 float zz1, float zz2, float xl1, float xl2, 36 float yl1, float yl2, float zl1, float zl2); 37 38 float XMin3() const {return x3Min;} 39 float XMax3() const {return x3Max;} 40 float YMin3() const {return y3Min;} 41 float YMax3() const {return y3Max;} 42 float ZMin3() const {return z3Min;} 43 float ZMax3() const {return z3Max;} 35 44 36 45 protected : … … 41 50 float lCO, dlCO; // Distance Camera-Centre du champ et profondeur de champ 42 51 bool v3D_obs; // Si defini par Set3DView_Obs 43 float zMin, zMax; // Pour delimiter le cube 3D (avec x/yMin-Max) 52 float x3Min, x3Max; // Pour delimiter le cube 3D 53 float y3Min, y3Max; // Pour delimiter le cube 3D 54 float z3Min, z3Max; // Pour delimiter le cube 3D 44 55 }; 45 56 … … 106 117 float cXc, cYc, cZc; // Pour garder position du centre de champ 107 118 float clCO, cDax, cDay; // Pour garder les valeurs avant Zoom In/Out 108 bool rOfg; // Vrai si on fait tourner l'objet et pas la camera 119 bool rOfg; // si Vrai on fait tourner l'objet et pas la camera 120 bool axfg; // si Vrai on trace les axes 121 bool skcfg; // si Vrai click-2 au centre -> rotation objet 109 122 }; 110 123 -
trunk/SophyaPI/PI/pisurfdr.cc
r180 r184 55 55 56 56 Set3DView((xmin+xmax)/2., (ymin+ymax)/2, zmin+(zmax-zmin)*0.40, 57 (xmin+xmax)/2.+D , (ymin+ymax)/2. +2*D , zmin+(zmax-zmin)*0.60, 0.25, 0.25);57 (xmin+xmax)/2.+D , (ymin+ymax)/2.-2.5*D , zmin+(zmax-zmin)*0.85, 0.25, 0.25); 58 58 59 xMin = xmin - 0.05*(xmax-xmin); 60 xMax = xmax + 0.05*(xmax-xmin); 61 yMin = ymin - 0.05*(ymax-ymin); 62 yMax = ymax + 0.05*(ymax-ymin); 63 zMin = zmin - 0.05*(zmax-zmin); 64 zMax = zmax + 0.05*(zmax-zmin); 59 x3Min = xmin; x3Max = xmax; 60 y3Min = ymin; y3Max = ymax; 61 z3Min = zmin-0.05*(zmax-zmin); z3Max = zmax+0.05*(zmax-zmin); 65 62 66 63 // printf("PISurfaceDrawer::UpdateLimits() : %g-%g %g-%g %g-%g (%g) \n", xmin,xmax,ymin,ymax,zmin,zmax,D); … … 86 83 87 84 /* --Methode-- */ 88 void PISurfaceDrawer::Draw(PIGraphicUC* g, float xmin, float ymin, float xmax, float ymax) 89 { 90 if (mArr == NULL) return; 91 85 void PISurfaceDrawer::DrawAxes(PIGraphicUC* g) 86 { 87 if (axesFlags == kAxesNone) return; 92 88 #if defined(__DECCXX) || defined(__KCC__) 93 89 PIGraphic3D* g3 = dynamic_cast<PIGraphic3D*>(g); … … 95 91 PIGraphic3D* g3 = (PIGraphic3D*)(g); 96 92 #endif 97 98 // g3->SelForeground(PI_White); 93 Draw3DBoxe(g3, XMin3(), XMax3(), YMin3(), YMax3(), ZMin3(), ZMax3(), 94 mXmin, mXmax, mYmin, mYmax, mZmin-0.05*(mZmax-mZmin), mZmax+0.05*(mZmax-mZmin)); 95 } 96 97 /* --Methode-- */ 98 void PISurfaceDrawer::Draw(PIGraphicUC* g, float xmin, float ymin, float xmax, float ymax) 99 { 100 // On trace les axes - En attendant de faire mieux - Reza 8/12/98 101 if (axesFlags != kAxesNone) DrawAxes(g); 102 103 if (mArr == NULL) return; 104 105 #if defined(__DECCXX) || defined(__KCC__) 106 PIGraphic3D* g3 = dynamic_cast<PIGraphic3D*>(g); 107 #else 108 PIGraphic3D* g3 = (PIGraphic3D*)(g); 109 #endif 110 99 111 g3->SelBackground(PI_White); 100 112 // g3->Erase(xmin, ymin, xmax-xmin, ymax-ymin); -
trunk/SophyaPI/PI/pisurfdr.h
r120 r184 18 18 19 19 virtual void Draw(PIGraphicUC* g, float xmin, float ymin, float xmax, float ymax); 20 virtual void DrawAxes(PIGraphicUC* g); 21 20 22 protected : 21 23 P2DArrayAdapter* mArr;
Note:
See TracChangeset
for help on using the changeset viewer.