contrib/gel/pop/pop_geometric_object.cxx

Go to the documentation of this file.
00001 // This is gel/pop/pop_geometric_object.cxx
00002 #include "pop_geometric_object.h"
00003 //:
00004 // \file
00005 #include <pop/pop_edge.h>
00006 #include <vcl_iostream.h>
00007 
00008 //: constructor
00009 pop_geometric_object::pop_geometric_object(pop_vertex *coordinate_system)
00010 {
00011   coordinate_system_ = coordinate_system;
00012 }
00013 
00014 //: constructor
00015 pop_geometric_object::pop_geometric_object(pop_vertex *coordinate_system, vcl_vector<pop_parameter*> &param ):
00016   pop_object(param)
00017 {
00018   coordinate_system_ = coordinate_system;
00019 }
00020 
00021 //: destructor
00022 pop_geometric_object::~pop_geometric_object()
00023 {
00024 }
00025 
00026 //: we should be able to transform to another coordinate system
00027 pop_geometric_object* pop_geometric_object::transform(pop_vertex *destination)
00028 {
00029   // step one get a list of transformations
00030   if (!coordinate_system_)
00031     return 0;
00032 
00033   vcl_list<pop_edge*> transforms;
00034   if (!(coordinate_system_->find_path(destination,transforms)))
00035     return 0;
00036 
00037   // transform to the end of the list
00038 
00039   vcl_list<pop_edge*>::iterator ei;
00040   pop_geometric_object* go_old = this;
00041   pop_geometric_object* go = this;
00042 
00043   for (ei=transforms.begin();ei!=transforms.end();ei++)
00044   {
00045     go = (*ei)->get_transform()->transform(go);
00046 
00047     if (!go)
00048       vcl_cout << "Warning: pop_geometric_object::transform could not transform object\n";
00049 
00050     // delete intermediary results should be done with smart pointers TODO
00051 
00052     if (go_old != this)
00053       delete go_old;
00054     go_old = go;
00055   }
00056 
00057   return go;
00058 }
00059 
00060 double pop_geometric_object::cost(pop_geometric_object *other)
00061 {
00062   // should be delegated to another object
00063   return 0;
00064 }

Generated on Sun Oct 12 05:14:37 2008 for contrib/gel/pop by  doxygen 1.5.1