From: Rob C. <rob...@at...> - 2002-01-28 01:38:43
Attachments:
vcsl_tutorial.cpp
|
Here is a little program I wrote to help me figure out how to use the vcsl library. It's heavily commented. It could shorten the learning curve for the next person trying to figure them out. Is there a place for it? Thanks, Robert J. Campbell Jr. rob...@at... |
From: Peter V. <Pet...@es...> - 2002-01-28 10:14:19
|
> Here is a little program I wrote to help me figure out how to use the vcsl > library. It's heavily commented. It could shorten the learning curve for > the next person trying to figure them out. Is there a place for it? Thanks for supplying this, and also for the addition of comments in the source code of vcsl_spatial. I have put the tutor programme in vcsl/examples/. There are still some problems with object creation/deletion which I'm currently looking into. More specifically, vcl_vector data members should not be stored as pointers but as plain vcl_vectors, hence solving the problem of missing deletes in destructors, and also solving an other problem: methods like parent(), scale(), beat() now return a pointer to a data member, which defeats the data hiding principle. With the changed approach, they return a copy of the vcl_vector. I'll CVS commit these changes a.s.a.p., after thorough checking. Peter. |
From: Andrew F. <aw...@ro...> - 2002-01-28 10:55:50
|
Thanks for the contribution Rob! The body of the code looks great, but I would suggest that the headers are changed to follow the principles in the VXL book. To summarize, because they may prove useful: 0. Use forward slashes in include lines. Rationale: Very few operating systems use backslash as a filename separator. 1. All standard headers included as <x> should use <vcl_x.h> Rationale: This is the only supported way to get cross-platform portability. 2. Order from general to specific. Rationale: Think of inheritance -- the more general (base) class must be defined before the more specific (dervied) class. If this order is not possible -- i.e. there is a cycle, that's a bug in the libraries, and should be fixed. Note that vcsl depends on vnl, so vnl headers should be included first. 3. Use <> rather than "". Rationale: Safety -- one might copy the example file elsewhere, to a directory with confusing contents. The -I flags should control the order of search, not the contents of the current directory. 4. The exception to 2 and 3 is the header file corresponding to the current .cxx file. This should be included at the top of file.cxx, in "", with no path. Rationale: If the .h is at the top of the file, it ensures it's free-standing and doesn't have any hidden dependencies. Forces the .cxx and .h to be copied together, as a change in the cxx will probably require a change in .h, and on many compilation environments, it's hard to get the cxx right unless the compiler includes exactly the correct .h. So, in the supplied example, the head of the file should be #include <vcl_iostream.h> #include <vxl/vxl/vnl/vnl_math.h> #include <vxl/vxl/vcsl/vcsl_cartesian_3d.h> #include <vxl/vxl/vcsl/vcsl_translation.h> #include <vxl/vxl/vcsl/vcsl_rotation.h> #include <vxl/vxl/vcsl/vcsl_displacement.h> #include <vxl/vxl/vcsl/vcsl_graph.h> |
From: Peter V. <Pet...@es...> - 2002-01-28 11:28:23
|
> So, in the supplied example, the head of the file should be > > #include <vcl_iostream.h> > #include <vxl/vxl/vnl/vnl_math.h> > #include <vxl/vxl/vcsl/vcsl_cartesian_3d.h> > #include <vxl/vxl/vcsl/vcsl_translation.h> > #include <vxl/vxl/vcsl/vcsl_rotation.h> > #include <vxl/vxl/vcsl/vcsl_displacement.h> > #include <vxl/vxl/vcsl/vcsl_graph.h> Well, actually, it should be: #include <vcl_iostream.h> #include <vnl/vnl_math.h> #include <vcsl_cartesian_3d.h> #include <vcsl/vcsl_translation.h> #include <vcsl/vcsl_rotation.h> #include <vcsl/vcsl_displacement.h> #include <vcsl/vcsl_graph.h> I will soon CVS commit this new file. Peter. |
From: Andrew F. <aw...@ro...> - 2002-01-28 11:36:18
|
Doh. Yes. Thanks! > Well, actually, it should be: > > #include <vcl_iostream.h> > #include <vnl/vnl_math.h> > #include <vcsl_cartesian_3d.h> > #include <vcsl/vcsl_translation.h> > #include <vcsl/vcsl_rotation.h> > #include <vcsl/vcsl_displacement.h> > #include <vcsl/vcsl_graph.h> > > I will soon CVS commit this new file. > > > Peter. > |
From: Rob C. <rob...@at...> - 2002-01-30 11:01:55
|
Thanks for correcting me. It's good advice that I'm going to start following in my own project, fclib.sourceforge.net. Rob Campbell rob...@at... > -----Original Message----- > From: vxl...@li... > [mailto:vxl...@li...]On Behalf Of Andrew > Fitzgibbon > Sent: Monday, January 28, 2002 5:55 AM > To: 'Peter Vanroose'; 'Rob Campbell' > Cc: vxl...@li... > Subject: RE: [Vxl-users] [CONTRIBUTION] vcsl_tutorial.cpp > > > > Thanks for the contribution Rob! > > The body of the code looks great, but I would suggest that > the headers are changed to follow the principles in the VXL > book. To summarize, because they may prove useful: > > 0. Use forward slashes in include lines. > Rationale: > Very few operating systems use backslash as a filename > separator. > > 1. All standard headers included as <x> should use <vcl_x.h> > Rationale: > This is the only supported way to get cross-platform > portability. > > 2. Order from general to specific. > Rationale: > Think of inheritance -- the more general (base) class must > be defined before the more specific (dervied) class. > If this order is not possible -- i.e. there is a cycle, > that's a bug in the libraries, and should be fixed. > > Note that vcsl depends on vnl, so vnl headers should be > included first. > > 3. Use <> rather than "". > Rationale: > Safety -- one might copy the example file elsewhere, to > a directory with confusing contents. The -I flags should > control the order of search, not the contents of the current > directory. > > 4. The exception to 2 and 3 is the header file corresponding > to the current .cxx file. This should be included at the > top of file.cxx, in "", with no path. > Rationale: > If the .h is at the top of the file, it ensures it's > free-standing and doesn't have any hidden dependencies. > Forces the .cxx and .h to be copied together, as a change > in the cxx will probably require a change in .h, and on many > compilation environments, it's hard to get the cxx right > unless the compiler includes exactly the correct .h. > > So, in the supplied example, the head of the file should be > > #include <vcl_iostream.h> > #include <vxl/vxl/vnl/vnl_math.h> > #include <vxl/vxl/vcsl/vcsl_cartesian_3d.h> > #include <vxl/vxl/vcsl/vcsl_translation.h> > #include <vxl/vxl/vcsl/vcsl_rotation.h> > #include <vxl/vxl/vcsl/vcsl_displacement.h> > #include <vxl/vxl/vcsl/vcsl_graph.h> > > > > _______________________________________________ > Vxl-users mailing list > Vxl...@li... > https://lists.sourceforge.net/lists/listinfo/vxl-users |