~ubuntu-branches/debian/squeeze/gmsh/squeeze

« back to all changes in this revision

Viewing changes to Geo/MVertex.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Christophe Prud'homme
  • Date: 2009-02-17 10:12:27 UTC
  • mfrom: (1.2.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20090217101227-mdrolkldak2pgd2i
Tags: 2.3.0.dfsg-1
* New upstream release
  + major graphics and GUI code refactoring; 
  + new full-quad/hexa subdivision algorithm (removed 
    Mesh.RecombineAlgo);
  + improved automatic transfinite corner selection (now also 
    for volumes); 
  + improved visibility browser; new automatic adaptive visualization
    for high-order simplices;
  + modified arrow size, clipping planes and transform options; many
    improvements and
  + bug fixes all over the place.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// Gmsh - Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 
1
// Gmsh - Copyright (C) 1997-2009 C. Geuzaine, J.-F. Remacle
2
2
//
3
3
// See the LICENSE.txt file for license information. Please report all
4
4
// bugs and problems to <gmsh@geuz.org>.
30
30
{
31
31
  if(_index < 0) return; // negative index vertices are never saved
32
32
 
 
33
  //  printf("tag = %d index %d pos = %g %g %g\n",onWhat()->tag(),_index,x(),y(),z());
 
34
 
33
35
  int myDim = 0, myTag = 0;
34
 
  if(saveParametric && onWhat()){
35
 
    myDim = onWhat()->dim(); 
36
 
    myTag = onWhat()->tag();
 
36
  if(saveParametric){
 
37
    if(onWhat()){
 
38
      myDim = onWhat()->dim(); 
 
39
      myTag = onWhat()->tag();
 
40
    }
 
41
    else
 
42
      saveParametric = false;
37
43
  }
38
44
 
39
45
  if(!binary){
202
208
static void getAllParameters(MVertex *v, GFace *gf, std::vector<SPoint2> &params)
203
209
{
204
210
  params.clear();
 
211
 
 
212
  if (gf->geomType() == GEntity::CompoundSurface &&
 
213
      v->onWhat()->dim() < 2){
 
214
    GFaceCompound *gfc = (GFaceCompound*) gf;
 
215
    params.push_back(gfc->getCoordinates(v));
 
216
    return;
 
217
  }
 
218
 
205
219
  if(v->onWhat()->dim() == 0){
206
220
    GVertex *gv = (GVertex*)v->onWhat();
207
221
    std::list<GEdge*> ed = gv->edges();
244
258
bool reparamMeshEdgeOnFace(MVertex *v1, MVertex *v2, GFace *gf, 
245
259
                           SPoint2 &param1, SPoint2 &param2)
246
260
{
 
261
 
247
262
  std::vector<SPoint2> p1, p2;
248
263
  getAllParameters(v1, gf, p1);
249
264
  getAllParameters(v2, gf, p2);
288
303
  }
289
304
}
290
305
 
291
 
bool reparamMeshVertexOnFace(MVertex *v, GFace *gf, SPoint2 &param)
 
306
bool reparamMeshVertexOnFace(const MVertex *v, const GFace *gf, SPoint2 &param)
292
307
{
293
 
  if (gf->geomType() == GEntity::CompoundSurface){
 
308
  if (gf->geomType() == GEntity::CompoundSurface &&
 
309
      v->onWhat()->dim() < 2){
294
310
    GFaceCompound *gfc = (GFaceCompound*) gf;
295
 
    param = gfc->getCoordinates(v);
 
311
    param = gfc->getCoordinates(const_cast<MVertex*>(v));
296
312
    return true;
297
313
  }
298
314
 
304
320
 
305
321
  if(v->onWhat()->dim() == 0){
306
322
    GVertex *gv = (GVertex*)v->onWhat();
307
 
    param = gv->reparamOnFace(gf, 1);
308
 
 
 
323
    // hack for bug in periodic curves
 
324
    if (gv->getNativeType() == GEntity::GmshModel && gf->geomType() == GEntity::Plane)
 
325
      param = gf->parFromPoint(SPoint3(v->x(), v->y(), v->z()));
 
326
    else
 
327
      param = gv->reparamOnFace(gf, 1);
309
328
    // shout, we could be on a seam
310
329
    std::list<GEdge*> ed = gv->edges();
311
330
    for(std::list<GEdge*>::iterator it = ed.begin(); it != ed.end(); it++)
334
353
  return true;
335
354
}
336
355
 
337
 
bool reparamMeshVertexOnEdge(MVertex *v, GEdge *ge, double &param)
 
356
bool reparamMeshVertexOnEdge(const MVertex *v, const GEdge *ge, double &param)
338
357
{
339
358
  param = 1.e6;
340
359
  Range<double> bounds = ge->parBounds(0);