Re: [brlcad-devel] About GSOC 2015

2015-03-20 Thread Zhaotian Wang
Hi Morrison
Thanks for the reply. Actually, the project ideas( Bending light and
Celestial mechanics particle system) are not the only two that attract me.
I think maybe I can provide some of my background and let you guys suggest
a project for me?
Currently I am a master candidate in China, and my major is computer
science. I've been a research assistant about computer graphics for two
years.

   - I've read some books(like pbrt) and papers about graphics. And I also
   implemented some toy raytracers by my own. Here is one:
   https://github.com/flexwang/HadoopRayTracer It is written in java though
   my favorite language is C/C++
   - I've contributed to Appleseed, which is an open source renderer
   project. Here is the issue I tackled:
   https://github.com/appleseedhq/appleseed/issues/210
   - I've done a siggraph 2015 project as the second author. The project is
   about 3D-reconstruction and I wrote most of the codes and I also wrote the
   code for rendering the final demo using Embree
   https://embree.github.io/as ray tracing kernels.


Also, I think it is a good idea to commit a patch first, so would you guys
mind suggesting something easy to handle for me?

-- 
*Zhaotian *
--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel


Re: [brlcad-devel] GSoC Proposal (X3D importer)

2015-03-20 Thread Djimeli Konrad
Hello Sean,

On 20 March 2015 at 05:02, Christopher Sean Morrison brl...@mac.com wrote:


 Really the only valid reason for implementing a library that is already
 readily available would be because they are license incompatible or yours
 will be substantially and non-subjectively better in some way.  That
 usually means faster or less memory or new features.  Just because
 something provides features X, Y, and Z when you only need feature X is not
 a strong position.


Your response has given me some light on what path to follow. I
have been revisiting some options and I think white dune
http://vrml.cip.ica.uni-stuttgart.de/dune/ would be great for X3D
parsing. It has great support for vrml and x3d including support for nurbs.
Some of the files I used to test the vrml-g converter were X3D
NurbsPatchSurface and NurbsPatchSolid files which I converted to vrml
polygonal representation using white dune and so I really appreciate its
functionality. The source code is about 44MB out of the box and it uses
GNU GENERAL PUBLIC LICENSE Version 2. I have been able able to reduce the
code to about 12MB but it still takes a noticable amount of time to compile
I think I can be able to reduce it to less than 7MB by isolating the code
essential for parsing but that would take some time and better
understanding of the code and also I have not encountered any issues with
dependencies.

Thanks
Konrad
--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel


Re: [brlcad-devel] Real-Time Ray Tracing

2015-03-20 Thread Christopher Sean Morrison

On Mar 20, 2015, at 7:17 PM, Vasco Alexandre da Silva Costa 
vasco.co...@gmail.com wrote:

 I came up with this tentative work plan for improving the OpenCL (CL) RT code 
 on BRL-CAD:

Excellent!

 - Hook into shot and db load routines (hooks disabled by default) in order to 
 capture ellipsoid primitives and shots into the CL side. Get familiar with 
 these top level interfaces of the code. (2 weeks)

This might require a little more inspection.  For places where you might “get 
opencl ready”, I would expect you to hook in when a raytrace context is created 
(e.g., rt_dirbuild()) or during geometry prep, which every object implements 
and is called during directory building.  If you see the rt_ell_prep() function 
in the opencl branch, that’s effectively where this is already happening for 
our quick test.

 - CL megakernel for boolean operations. i need to check how involved this 
 will be to have a more accurate time estimate. Probably requires storing some 
 primitive hierarchy on CL. Integration with C++ side of things for other  
 primitives may be problematic. (2 weeks?)

This may be a large task, possibly the bulk of your timeframe, as boolean 
weaving is one of the most complex aspects in BRL-CAD.  Understanding it is 
almost certainly going to take you some time.  However, you’ll probably be able 
to publish a paper on it when you’re done! :)

Something to consider, you could even propose *only* focusing on this aspect 
for GSoC.  What I mean is that you could spend time restructuring the rt 
dispatch logic, which is something like 
forAllPixels-shootOneRay-traverseScene-evalHits-weaveBooleans-colorizePixel
 that iterates over all pixels depth-first pipeline style.  You’d restructure 
it into something like phase1: 
forAllPixels-shootOneRay-traverseScene-evalHits then phase2: 
CLweaveAllBooleans-CLcolorizePixels.

If you got it working, you’d speed up ray tracing somewhere between 25-50% (as 
that is about how much time Boolean weaving takes) for all geometry, not just 
ellipsoids and it could go into immediate production use.  It’d be in users 
hands.  More on this later.

With time-permitting, you could then work on the rest of the pipeline like 
implementing the top-level bundled dispatch and scene traversal acceleration, 
and primitive shot() routines.

 - Implement CL rectilinear grids [1] (improvement on the Mike Gigante Nugrid 
 currently used in BRL-CAD) spatial partitioning construction and traversal. 
 Should reuse most of the regular grid construction code but requires some 
 extra construction steps and has different traversal scheme (2.5 weeks)

Sounds good, but know that we don’t actually use Nugrid.  It’s faster for some 
scenes, slower for others — overall a wash.  I think there’s also a bug 
somewhere in there.  We use a custom BSP traversal for production work that is 
much more thoroughly tested and robust.  Grids generally do much better on the 
GPU than they do on the CPU.

 - Cleanups, bugfixes, final tests, docs. (2.5 weeks)

So the only planning concern is that this isn’t an incremental plan.  It’s 
always a big red flag when a proposal has a big “test and document” at the end. 
 If anything goes wrong or takes a couple weeks longer than planned with one of 
your early steps, we usually end up with something incomplete that cannot be 
shipped to users.

Assume something will go wrong, that it will take longer, or your computer will 
explode next week.  How would you change your approach so that users still get 
something?  If you had to immediately stop working, there should be something 
usable (without requiring additional work by you or others to make it usable). 
This is an aspect of “coding complete” mentioned on 
http://brlcad.org/wiki/Google_Summer_of_Code/Acceptance#Write_complete_code

Basically, this means thinking through how you can incrementally break up the 
task into phases where each phase gets tested and could be put into production 
use without detriment.  It not only means you’re continually cleaning up, 
testing, and updating docs, it means you’re continually focused on the user and 
their benefit instead of your development comfort.  If that means getting a 
little less done, that’s okay.  Users will love you for it.

My other concern was that your objective doesn’t result in a feature that 
affects users.  Yay, devs can raytrace ellipsoids MUCH faster … and users see 
nothing.  That’s why I’d suggest either focusing only on boolean weaving, or on 
bundled ray dispatch+traversal, or hit+result gathering, etc — something that 
could be put into immediate use, even if it’s not going to give the 10x speedup 
until the rest of the pipeline is converted.  Changing BRL-CAD’s render 
pipeline to support this style of evaluation is going to be a lot of work. 

Still, outstanding proposal progress.  This and other proposals are making me 
pretty darn excited!

Cheers!
Sean

p.s. Some technical libraries to consider in lieu of directly binding to OpenCL:


Re: [brlcad-devel] GSoC 2015 participation

2015-03-20 Thread Christopher Sean Morrison

On Mar 20, 2015, at 9:51 AM, Vicky vi...@altermundi.net wrote:

 Hi all!
 
 I joined to this mailing list because I am a CAD user and I like FOSS, I 
 would 
 like to contribute to BRL-CAD by participating to GSoC 2015.

Welcome Vicky!

 From the ideas list I liked more Benchmark Performance Database and Material 
 Database, I like web development but I usually don't have much time to expand 
 my knowledge, and this would be a very good occasion for me to both 
 contribute 
 to the community, learn more interesting stuff, know better BRL-CAD 
 community, 
 and have the possibility to do this gorgeous stuff full time this summer :)

For some projects that have been worked on previously, you’ll want to make sure 
you check on the prior efforts to see where things left off.  Your proposal 
should be a continuation/improvement of the work to date, usually with an 
emphasis on “finishing” the work, adding production quality, improving 
usability, etc.  This also means taking time to become familiarized with any 
existing code, actually installing, and testing things out.

All prior GSoC projects are on our website: 

http://brlcad.org/wiki/Google_Summer_of_Code/2014
http://brlcad.org/wiki/Google_Summer_of_Code/2013
http://brlcad.org/wiki/Google_Summer_of_Code/2012
http://brlcad.org/wiki/Google_Summer_of_Code/2011
http://brlcad.org/wiki/Google_Summer_of_Code/2009
http://brlcad.org/wiki/Google_Summer_of_Code/2008

Those are also GREAT resources for seeing examples of other GSoC proposals 
we’ve accepted in the past, the level of detail we expect to see, and summaries 
for how those projects went.

 I have recently completed Aerospace Engineering and I am student of 
 Electronic 
 Engineering right now, as hobby I have done web development and design, so I 
 know HTML, CSS, JavaScript and various web development technology such as 
 JQuery and AJAX, while I have basic knowledge of SQL, Python and PHP.

I sent a message just yesterday that you might want to look up on the mailing 
list archives (on sourceforge).  I gave an overview of our project priorities 
and mentioned a web application topic that might be of interest — implementing 
an interface for testing repository commit ranges.

 I would know if those ideas would be very integrated in BRL-CAD wiki or the 
 plan is to keep them as stand alone websites?

It’s good when projects integrate with existing infrastructure, but it’s even 
more important that projects get taken to completion so they can actually be 
put to use and remain maintainable by others.  However this is accomplished is 
often secondary if the production quality is there.

Cheers!
Sean



--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel


Re: [brlcad-devel] Object-oriented C++ Geometry API : Project for GSoC '15

2015-03-20 Thread Kalpit Thakkar
 2015-03-16 6:16 GMT+01:00 Kalpit Thakkar ceasy...@gmail.com:
  Hello Daniel,
  I have been looking at Andrei Popescu's patches and I tried to understand
  the class design in core interface.
 
  According to my understanding, every primitive object class has several
  constructors : for it's special cases as well as it's general case.
  Hyperbolic and Parabolic quadrics derived from any primitive object have
  been made into a different class altogether.

 The constructors are often related to mged commands, e.g. arb7, arb6,
 etc. to generate arb8s.


Oh right, I didn't try to draw anything with MGED before, even though I
built it. I tried some commands today and yeah, I get the similarity in the
constructors and the MGED commands. Nice!


  Every primitive class has helper classes for any field that is an
 integral
  part of definition of the primitive.
  For e.g : In the class BagOfTriangles, the helper class is Face. In the
  class Combination, the helper classes are ConstTreeNode and TreeNode,
 and so
  on.
  Yes, every class in general has it's fields' modifiers (getter, setter,
  destroyer) functions.
 
  Things common in all classes :
  1. Inheritance from Object class and hence the definition of it's virtual
  methods
  2. A protected constructor connecting it to constDatabase (friend class,
 so
  that constDatabase can access the constructor)
  3. The internal structure of the primitive is kept private - only
 Database
  can access it freely (friend class)
 
  The remaining primitives would be having a similar class design I guess
 (I'm
  not an expert at this, so we'll have to discuss in detail about it)
 
  Well, I am facing a dilemma : Should we start with the testing of
 primitive
  classes already implemented or should we start with designing new
 classes?

 That's a good question.  However, testing wouldn't fill a GSoC project.


  Maybe we can do the testing of as many primitives as possible till end of
  April and then start with designing new primitive classes?

 Maybe, but the GSoC working period starts in May.


Yeah, I was suggesting to do the testing part before the coding period
starts in May, so that I also get more familiar with the design and
implementation of the current interface.


  The primitives left are **:
  ARBN
  ARS
  EXTRUDE
  REVOLVE
  DSP
  EBM
  METABALL
  SPLINE
  VOL
  GRIP
  BINUNIF ^^
  SUBMODEL ^^
  It looks like Nurb's and Brep's files are written in C++ already; do they
  need to be restructured? Or are they fine as they are?
  (I personally feel they need restructuring as well as adding some
 things!)

 I haven't looked at them yet but they probably need to be restructed a
 little bit.


Okay. Nice then. If time allows, I'll try to do this before coding starts
as well. :)


  That's about primitives. About the features that I would like to add :
  1. Centroid, Surface area and Volume (I'm assuming this would not be very
  difficult)

 Are they available for combinations?


No they are not. So, I guess I'll have to implement new functions in comb.c
first and then create an interface in the API. Am I right?


  2. Shading and Lighting from raytracing
  I'll need guidance on how to go about for Combinations of primitives!
 
  NOTE : I'll have to take a short break because my exams are starting from
  18th. I'll be available, but won't be able to provide prompt replies.
 I'll
  be back to work, full flow, from 20th, 1700 hours (UTC +0530).

 I think you mean in March.  I.e. this is no problem.

  I will complete reviewing the tests written by Mark for Cone and Torus
 today
  and get back to you.
  I'll start for the exams from today, 1700 hours (UTC +0530).
  From 20th, 1700 hours : I will start with my proposal and complete
 rewriting
  code wherever needed to bring it in conformation with the guidelines in
  HACKING file.
  I will then write the tests for the primitives that don't already have
 one
  and I will be communicating with Andrei as well, starting from today.
 
  PS : I hope I'm making things clear and not hazy. I'm really excited to
 work
  on this project. :D
 
  ** I haven't included Height Field (HF) and polysolid (POLY) here,
 because
  in the documentation about primitives, it is mentioned that they are
  deprecated and, DSP and BOT should be used instead (respectively).
 Should I
  still include them?

 I would say no.


Okay, cool.


  ^^ Are these actually geometric primitives?
 
  Doubt : In core interface, what is Unknown.h/.cpp for?

 This is a place-holder for not yet implemented primitives.  For
 example if you have an arbn the Unknown class will handle it in the
 core interface.  If you ask it for its type it will tell you
 Unknown.


Ah! I see. So, this is the guide to be looked up to while designing a new
class in coreinterface, is it?

Some things I would like to talk about :
1. There are some primitives that don't have a centroid, volume and / or
surface area callback(s). So, I'll have to implement their callbacks in the

[brlcad-devel] GSoC 2015 participation

2015-03-20 Thread Vicky
Hi all!

I joined to this mailing list because I am a CAD user and I like FOSS, I would 
like to contribute to BRL-CAD by participating to GSoC 2015.

From the ideas list I liked more Benchmark Performance Database and Material 
Database, I like web development but I usually don't have much time to expand 
my knowledge, and this would be a very good occasion for me to both contribute 
to the community, learn more interesting stuff, know better BRL-CAD community, 
and have the possibility to do this gorgeous stuff full time this summer :)

I have recently completed Aerospace Engineering and I am student of Electronic 
Engineering right now, as hobby I have done web development and design, so I 
know HTML, CSS, JavaScript and various web development technology such as 
JQuery and AJAX, while I have basic knowledge of SQL, Python and PHP.

I would know if those ideas would be very integrated in BRL-CAD wiki or the 
plan is to keep them as stand alone websites?

I am very motivated to do this project and I would definitely learn a lot of 
things, moreover i would like to continue to cooperate with BRL-CAD community 
also after the GSoC ends :)

Thanks for this possibility!
Cheers!

--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel


Re: [brlcad-devel] [GOSC 2015 Introduction][Mesh Library Clean up][STEP Viewer Program]

2015-03-20 Thread Milinda Fernando
Hello,

If you have trouble finding the attached document here is the online link
to view them.

Internship Report:
https://drive.google.com/file/d/0B0lbgk9iEcLqalJwVlRkZVZlc0hlQW4tcS12TGJyc2JNNkJJ/view?usp=sharing

Mesh optimization module code documentation (GSOC 2014):
https://drive.google.com/file/d/0B0lbgk9iEcLqNGx3aFkwcExrZ2dVNVk3andMMVJsOExqeElR/view?usp=sharing



2015-03-20 19:59 GMT+05:30 Milinda Fernando milind...@gmail.com:

 Hello,

 I am Milinda and I am a final year undergraduate student from Department
 of Computer Science and Engineering, University of Moratuwa Sri Lanka.
 I am specifically interested in the projects *“Mesh library Cleanup”* and 
 *“STEP
 Viewer”*.

 In GSOC 2014 I implemented a separate mesh optimization module for the
 ViennaMesh http://viennamesh.sourceforge.net/ meshing library mentored
 by Florian Rudolf at Computational Science and Engineering, TU Wien.
 I have attached the mesh optimization module code documentation with this
 e-mail so you can get an idea on what I have done in that project.
 I believe if I have some extra time I can implement some of the mesh
 optimization functionality after cleaning up the Mesh library code.

 I have experience on working with the Opencascade
 http://www.opencascade.org/ library and I have coded STEP
 viewers/exporter programs using Opencascade Library.
 I got to know about Opencascade when I was working as an Intern in Sutra
 http://www.sutratechnologies.com/ Technologies which is attached to Concepts
 NREC http://www.conceptsnrec.com/.

 I have attached my internship report with this email so if you want you
 can refer to that to get an idea on what I have done during my internship.
 But in this project I need to implement a STEP viewer based on the BRL-CAD
 libraries right?

 I will try to submit the proposals for these ideas as soon as possible.

 Thank You.

 --
 Milinda Fernando.
 Undergraduate Department of Computer Science and Engineering
 University of Moratuwa
 Sri Lanka.
 Blog: http://milindasf.blogspot.com/




-- 
Milinda Fernando.
Undergraduate Department of Computer Science and Engineering
University of Moratuwa
Sri Lanka.
Blog: http://milindasf.blogspot.com/
--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel


Re: [brlcad-devel] Object-oriented C++ Geometry API : Project for GSoC '15

2015-03-20 Thread Kalpit Thakkar
On Mon, Mar 16, 2015 at 11:27 PM, Andrei - Constantin Popescu 
popescu.andrei1...@gmail.com wrote:


 2015-03-16 9:07 GMT+02:00 Kalpit Thakkar ceasy...@gmail.com:

 Kalpit,

 First of all, what I'm telling you is much more informal and probably a
 lot less accurate than what Daniel can, so it's best to stick with his
 feedback.


Yes, I will stick with his feedback. As a fellow developer, I thought your
experience might help me, so I asked you for details on this.


 Hello Andrei,
 I wanted to ask you some questions!

 Foremost,
 How did you start out on your project? I mean, what were the initial
 places where you looked and found information required for carrying out the
 project?

 I have been looking at your patches and the work done related to this in
 GCi '14.
 Your implementation on BoT, Pipe, Sketch and Sphere is pretty clean and
 awesome!
 Well, in your proposal, you have mentioned about vol, extrude and ars as
 well. Did you start anything on it? Can you guide me about it?


  No, I haven't done anything else than those you mentioned,  I worked a
 bit on RCC but I believe I stopped very early, or was already done or so.
 What you could do (and again, Daniel might give you a better task) is to
 merge/apply my Pipe implementation, there is some feedback from Daniel
 which I hadn't apply, it's a good/easy thing to do. Basically, my idea was
 to look at how the objects are implemented internally and to design(with
 Daniel) a class that would resemble the primitive's behaviour.
  I worked to fit the internal structure into the core interface smoothly.
 All the operations are actually performed on the BRL-CAD internal
 structures (rt_primtive_internal)

 What I would do is integrate the work that's already been done( I think
 pipe is last unmerged) and anything that Daniel mentioned.  You should
 figure out a primitive priority. In example, extrude depended on Sketch, it
 was difficult/not useful to implement extrude before having sketch.

 Regarding testing, my humble opinion is that you could test a primtive
 that's support for another(sketch - extrude), it's no point developing a
 new one if the base one doesn't work.


 Again, Daniel helped me throughout this project as well, so he's really
 the best person to speak to, I just tried to  share my experience to the
 best of my capability. Good luck!


Thanks a lot, Andrei. I was thinking the same about looking at your Pipe
implementation and discussing with Daniel about anything that should be
added / applied to it, because it wasn't merged, meant there was something
more to be done! I will do that soon enough. That would also help me get
familiar with how to go about reviewing someone else's work and make it
work with the system. Also, how are things merged. Right?

Yeah, all operations are done on rt_*_internal and Daniel told me that
constructors use the form used in MGED commands. That was something I
should've figured out but I guess I didn't work hard enough to look for it.
Yeah, I have figured out a priority : I want to implement ARBN and ARS this
time, without fail and as you said now that extrude depends on Sketch, it
will be a good idea to implement extrude.

I'll keep in mind what you have said. It has been really helpful to focus
my line of thought and I hope to keep getting your valuable feedback.

Regards,
 Andrei


With Regards,
Kalpit Thakkar



 --
 Dive into the World of Parallel Programming The Go Parallel Website,
 sponsored
 by Intel and developed in partnership with Slashdot Media, is your hub for
 all
 things parallel software development, from weekly thought leadership blogs
 to
 news, videos, case studies, tutorials and more. Take a look and join the
 conversation now. http://goparallel.sourceforge.net/
 ___
 BRL-CAD Developer mailing list
 brlcad-devel@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/brlcad-devel


--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel


Re: [brlcad-devel] Real-Time Ray Tracing

2015-03-20 Thread Vasco Alexandre da Silva Costa
On Sat, Mar 21, 2015 at 12:30 AM, Christopher Sean Morrison brl...@mac.com
wrote:
...

 This may be a large task, possibly the bulk of your timeframe, as boolean
 weaving is one of the most complex aspects in BRL-CAD.  Understanding it is
 almost certainly going to take you some time.  However, you’ll probably be
 able to publish a paper on it when you’re done! :)

 Something to consider, you could even propose *only* focusing on this
 aspect for GSoC.  What I mean is that you could spend time restructuring
 the rt dispatch logic, which is something like
 forAllPixels-shootOneRay-traverseScene-evalHits-weaveBooleans-colorizePixel
 that iterates over all pixels depth-first pipeline style.  You’d
 restructure it into something like phase1:
 forAllPixels-shootOneRay-traverseScene-evalHits then phase2:
 CLweaveAllBooleans-CLcolorizePixels.


I see. Then I need to examine this part better and propose a plan focused
on this. I only have CS grad student like knowledge of CSG since most of my
experience in RT is with acceleration structures and ray processing so I am
interested in seeing how you do the weaving. If there are any specific
optimizations, etc.


 If you got it working, you’d speed up ray tracing somewhere between 25-50%
 (as that is about how much time Boolean weaving takes) for all geometry,
 not just ellipsoids and it could go into immediate production use.  It’d be
 in users hands.  More on this later.


Yeah this seems to be a good idea. I wanted to do something that would
leave an actual performance improvement for users in the end. If this is
the critical compute intensive task then it is what needs to be addressed.


 With time-permitting, you could then work on the rest of the pipeline like
 implementing the top-level bundled dispatch and scene traversal
 acceleration, and primitive shot() routines.

...

 Sounds good, but know that we don’t actually use Nugrid.  It’s faster for
 some scenes, slower for others — overall a wash.  I think there’s also a
 bug somewhere in there.  We use a custom BSP traversal for production work
 that is much more thoroughly tested and robust.  Grids generally do much
 better on the GPU than they do on the CPU.


That is news to me. When i glanced at librt/shoot.c I saw a lot of
references to 'nugrid'. There's only one match for 'nubsp' and it is in a
comment. I guess I need to start peeling this and see what is actually
being called.

 - Cleanups, bugfixes, final tests, docs. (2.5 weeks)


 So the only planning concern is that this isn’t an incremental plan.  It’s
 always a big red flag when a proposal has a big “test and document” at the
 end.  If anything goes wrong or takes a couple weeks longer than planned
 with one of your early steps, we usually end up with something incomplete
 that cannot be shipped to users.


I'm used to doing incremental development with continuous integration. I
don't know how to do it any other way. I always test every step in order to
not break the code. But in my experience something always needs fine tuning
or debugging in the end. Also the docs always lag behind everything. Not
dedicating time specifically in the plan for docs usually means next to no
docs will be produced.


 Assume something will go wrong, that it will take longer, or your computer
 will explode next week.  How would you change your approach so that users
 still get something?  If you had to immediately stop working, there should
 be something usable (without requiring additional work by you or others to
 make it usable). This is an aspect of “coding complete” mentioned on
 http://brlcad.org/wiki/Google_Summer_of_Code/Acceptance#Write_complete_code


I was an OSS project maintainer (Freeciv) for close to 4 years. You never
ever break the code with a commit. BTW what's your process for patch code
reviews? You discuss patches on the mailing-list?


 Basically, this means thinking through how you can incrementally break up
 the task into phases where each phase gets tested and could be put into
 production use without detriment.  It not only means you’re continually
 cleaning up, testing, and updating docs, it means you’re continually
 focused on the user and their benefit instead of your development comfort.
 If that means getting a little less done, that’s okay.  Users will love you
 for it.

 My other concern was that your objective doesn’t result in a feature that
 affects users.  Yay, devs can raytrace ellipsoids MUCH faster … and users
 see nothing.  That’s why I’d suggest either focusing only on boolean
 weaving, or on bundled ray dispatch+traversal, or hit+result gathering, etc
 — something that could be put into immediate use, even if it’s not going to
 give the 10x speedup until the rest of the pipeline is converted.  Changing
 BRL-CAD’s render pipeline to support this style of evaluation is going to
 be a lot of work.


I basically wanted to have a whole (optional) accelerated rendering path
from end to end so we could then work on the primitives 

[brlcad-devel] GSOC'15:NURBS EDITING SUPPORT

2015-03-20 Thread Nihar Mehta
I have following doubts in this subproject:
1. Do we have support for converting trimmed to untrimmed curves with
T-splines?
http://www.tsplines.com/technology/WTN.pdf

2. Can we use Dual loop algorithm for smoothening curves?
http://www.scientific.net/AMR.97-101.2477

3. Does detaching curve mean the same as removing knots from B-splines?

-- 
Regards,
Nihar Mehta,
Second Year Undergraduate,
Dept of Mechanical Engineering,
Minors in Computer Science
IIT Bombay.
--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel


[brlcad-devel] Interest in GSoC 2015

2015-03-20 Thread leger foposse
Hi everyone,

I am Leger Foposse, a Computer Science postgraduate major from the
University of Yaounde, Cameroon. I am interested in the STEP AP242 project
and would like to know the specific features which pertain to AP242 that
need to be added to the step-g importer.

Regards.
Leger Foposse.
--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel


Re: [brlcad-devel] Combination in LIBRT

2015-03-20 Thread Christopher Sean Morrison

On Mar 20, 2015, at 12:41 PM, Kalpit Thakkar ceasy...@gmail.com wrote:

 Hello!
 I have been trying to figure out for sometime now, what exactly is a 
 combination in LIBRT.

A combination is a collection of objects.  Semantic meaning is given to a 
combination based on where it exists hierarchically and what it contains.

 Is it a non-leaf node in the tree made out of the different primitives in the 
 scene (I guess this tree would then be used for raytracing?)

It can be, yes.

 OR
 Is it a combination of different primitives explicitly assembled by the user?

It can be, yes.

Those options are not mutually exclusive. :)  By definition, they are non-leaf 
nodes in terms of the geometric directed acyclic graph that they comprise.  
They describe a hierarchical grouping of primitives (and other combinations).  
They can be rendered (as can primitives).  They can be assembled by the user, 
e.g., by a command.  They can be created by some code, e.g., by an importer or 
procedural geometry generator. 

They are geometry objects.  Take a look at the mged quick ref card (go to 
website, documentation section) for a brief summary of terminology.

Cheers!
Sean



--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel


Re: [brlcad-devel] [GOSC 2015 Introduction][Mesh Library Clean up][STEP Viewer Program]

2015-03-20 Thread Christopher Sean Morrison
n Mar 20, 2015, at 10:29 AM, Milinda Fernando milind...@gmail.com wrote:

 I am Milinda and I am a final year undergraduate student from Department of 
 Computer Science and Engineering, University of Moratuwa Sri Lanka.

Welcome Milinda!

 I am specifically interested in the projects “Mesh library Cleanup” and “STEP 
 Viewer”.

Awesome.  Note that mesh library cleanup will be a continuation or restart of 
work performed last summer (see logs @ 
http://brlcad.org/wiki/Google_Summer_of_Code/2014 and check out the nmgreorg 
branch in our source repository ), so finishing that work would be highly 
valuable.  I recommend talking with Zhao and checking out the sources.  The 
STEP Viewer project is an idea for the STEPcode association, so you should join 
their mailing list to talk about it more there.  Two proposals would be perfect 
if you can manage the effort.

See http://brlcad.org/wiki/Google_Summer_of_Code/Checklist for a link to talk 
about STEPcode work.

 In GSOC 2014 I implemented a separate mesh optimization module for the 
 ViennaMesh meshing library mentored by Florian Rudolf at Computational 
 Science and Engineering, TU Wien.

Neat, I haven’t looked at Vienna in years.  Rather relevant to our work.

 I have attached the mesh optimization module code documentation with this 
 e-mail so you can get an idea on what I have done in that project. 
 I believe if I have some extra time I can implement some of the mesh 
 optimization functionality after cleaning up the Mesh library code.

What mesh representation structure does ViennaMesh implement?  Half-edge?  
Winged-edge?  Something else?

 I have attached my internship report with this email so if you want you can 
 refer to that to get an idea on what I have done during my internship. 
 But in this project I need to implement a STEP viewer based on the BRL-CAD 
 libraries right?

Actually no.  You can use any libraries to build the viewer — you’re welcome to 
use BRL-CAD’s libraries, but you’ll probably be better suited with a GUI 
framework like Qt or a minimal API like fltk, wxwidgets, or clanlib.  BRL-CAD 
currently uses tcl/tk extensively, but we’ll eventually be migrating over to qt 
ourselves.  That said, developing a STEP Viewer is for the STEPcode project, so 
you should discuss requirements with them on their mailing list.

Cheers!
Sean

--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel


Re: [brlcad-devel] Interest in GSoC 2015

2015-03-20 Thread Christopher Sean Morrison

On Mar 20, 2015, at 8:19 AM, leger foposse fopossele...@gmail.com wrote:

 Hi everyone,
 
 I am Leger Foposse, a Computer Science postgraduate major from the University 
 of Yaounde, Cameroon. I am interested in the STEP AP242 project and would 
 like to know the specific features which pertain to AP242 that need to be 
 added to the step-g importer.

Ideally all of them.

The step-g importer is currently linked against one parser, the ap203 parser 
generated by STEPcode.  It imports solid geometry in the ap203 format, which 
entails support for too many entity types to itemize here — read the sources.  
We’d like to do the same with the ap242 format, at a minimum supporting the 
advanced shape representations (solid geometry objects) and more over time.

Cheers!
Sean


--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel


Re: [brlcad-devel] Combination in LIBRT

2015-03-20 Thread Christopher Sean Morrison

On Mar 20, 2015, at 3:22 PM, Kalpit Thakkar ceasy...@gmail.com wrote:

 Now, if I import some model into MGED, which is an external model, will it 
 also be broken down into a hierarchy by MGED, such that leaf nodes consist of 
 basic primitives and the parent nodes are obtained by applying union, 
 intersection or subtraction on the child nodes?

This entirely depends on what the source geometry is, what representation 
format it’s in, how the importer is written, and what that translate to in our 
system.  Imported geometry rarely consists of basic primitives, usually 
importing in as polygonal mesh geometry (e.g., our nmg or bot object types) or 
as NURBS boundary representation (i.e., our brep object type).

 That is, is every combination a hierarchical grouping of primitives, where 
 leaf nodes are some core(basic) primitives?
 (I have based this doubt on the tree you have drawn using letters CAD in the 
 Quick Ref Card)

I’m not sure I fully understand your question.  A combination object is a 
collection of objects and operators.  The objects can be primitive objects and 
other combination objects.  The operations describe what kind of grouping to 
perform.  What doubt do you have about the card diagram?  It shows you a visual 
tree with several primitive objects and a hierarchy of combination objections.

 Okay, so I was stuck here while I was trying to figure out how to find the 
 centroid of the combinations, because I wasn't able to visualize how exactly 
 a combination would look like in MGED. While talking to ``Erik on IRC right 
 now, I got an idea of how to get the volume and surface area of a 
 combination, well, to some extent atleast. The approach involves shooting 
 rays on the object with square 1mmx1mm cells on the grid and the distance 
 travelled by the ray inside the object will help me find the volume.

I suggest actually going through one or two of the mged tutorials.  I think 
there is confusion because you’re trying to understand terms without actually 
using the tools.  Especially if you plan on writing code, you probably need 
some basic familiarity with mged, gqa, and rtweight.

The approach you suggest is undesirable as it can fail on extremely small and 
large objects.  If you need to sample, we have tools already that do this well 
— it’d be better to refactor them into an API that you query.  For some 
combinations, ones comprising single primitives or disjoint objects, you 
wouldn’t need to sample at all and can evaluate an exact solution.

 Surface area would be found by tessellating the object and summing the areas 
 of the triangle.

This would be merely an approximation.

 If there is any mathematical alternative to finding the volume and surface 
 area of combinations, it'll be really helpful. Centroid is still pending.

You’re going to waste time trying to tackle too many things at once.  
Half-solutions are not at all useful.  I suggest focusing on just one small 
incremental change/improvement, if you’re trying to develop a patch.

Cheers!
Sean

--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel


Re: [brlcad-devel] Combination in LIBRT

2015-03-20 Thread Kalpit Thakkar
On Fri, Mar 20, 2015 at 10:29 PM, Christopher Sean Morrison brl...@mac.com
wrote:


 On Mar 20, 2015, at 12:41 PM, Kalpit Thakkar ceasy...@gmail.com wrote:

  Hello!
  I have been trying to figure out for sometime now, what exactly is a
 combination in LIBRT.

 A combination is a collection of objects.  Semantic meaning is given to a
 combination based on where it exists hierarchically and what it contains.

  Is it a non-leaf node in the tree made out of the different primitives
 in the scene (I guess this tree would then be used for raytracing?)

 It can be, yes.

  OR
  Is it a combination of different primitives explicitly assembled by the
 user?

 It can be, yes.

 Those options are not mutually exclusive. :)  By definition, they are
 non-leaf nodes in terms of the geometric directed acyclic graph that they
 comprise.  They describe a hierarchical grouping of primitives (and other
 combinations).  They can be rendered (as can primitives).  They can be
 assembled by the user, e.g., by a command.  They can be created by some
 code, e.g., by an importer or procedural geometry generator.

 They are geometry objects.  Take a look at the mged quick ref card (go to
 website, documentation section) for a brief summary of terminology.


Thanks a lot Sean! I had a look at the MGED ref card and I have a good
understanding about what are combinations now!

Now, if I import some model into MGED, which is an external model, will it
also be broken down into a hierarchy by MGED, such that leaf nodes consist
of basic primitives and the parent nodes are obtained by applying union,
intersection or subtraction on the child nodes?
That is, is every combination a hierarchical grouping of primitives, where
leaf nodes are some core(basic) primitives?
(I have based this doubt on the tree you have drawn using letters CAD in
the Quick Ref Card)

Okay, so I was stuck here while I was trying to figure out how to find the
centroid of the combinations, because I wasn't able to visualize how
exactly a combination would look like in MGED. While talking to ``Erik on
IRC right now, I got an idea of how to get the volume and surface area of a
combination, well, to some extent atleast. The approach involves shooting
rays on the object with square 1mmx1mm cells on the grid and the distance
travelled by the ray inside the object will help me find the volume.

Surface area would be found by tessellating the object and summing the
areas of the triangle.

If there is any mathematical alternative to finding the volume and surface
area of combinations, it'll be really helpful. Centroid is still pending.
I'm trying to understand the method ``Erik suggested nicely right now. If
you have any suggestions, please do let me know. :)

Cheers!
 Sean


With Regards,
Kalpit Thakkar



 --
 Dive into the World of Parallel Programming The Go Parallel Website,
 sponsored
 by Intel and developed in partnership with Slashdot Media, is your hub for
 all
 things parallel software development, from weekly thought leadership blogs
 to
 news, videos, case studies, tutorials and more. Take a look and join the
 conversation now. http://goparallel.sourceforge.net/
 ___
 BRL-CAD Developer mailing list
 brlcad-devel@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/brlcad-devel

--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel


Re: [brlcad-devel] Combination in LIBRT

2015-03-20 Thread Kalpit Thakkar
On Sat, Mar 21, 2015 at 1:52 AM, Christopher Sean Morrison brl...@mac.com
wrote:


 On Mar 20, 2015, at 3:22 PM, Kalpit Thakkar ceasy...@gmail.com wrote:

 Now, if I import some model into MGED, which is an external model, will it
 also be broken down into a hierarchy by MGED, such that leaf nodes consist
 of basic primitives and the parent nodes are obtained by applying union,
 intersection or subtraction on the child nodes?


 This entirely depends on what the source geometry is, what representation
 format it’s in, how the importer is written, and what that translate to in
 our system.  Imported geometry rarely consists of basic primitives, usually
 importing in as polygonal mesh geometry (e.g., our nmg or bot object types)
 or as NURBS boundary representation (i.e., our brep object type).

 That is, is every combination a hierarchical grouping of primitives, where
 leaf nodes are some core(basic) primitives?
 (I have based this doubt on the tree you have drawn using letters CAD in
 the Quick Ref Card)


 I’m not sure I fully understand your question.  A combination object is a
 collection of objects and operators.  The objects can be primitive objects
 and other combination objects.  The operations describe what kind of
 grouping to perform.  What doubt do you have about the card diagram?  It
 shows you a visual tree with several primitive objects and a hierarchy of
 combination objections.

 Okay, so I was stuck here while I was trying to figure out how to find the
 centroid of the combinations, because I wasn't able to visualize how
 exactly a combination would look like in MGED. While talking to ``Erik on
 IRC right now, I got an idea of how to get the volume and surface area of a
 combination, well, to some extent atleast. The approach involves shooting
 rays on the object with square 1mmx1mm cells on the grid and the distance
 travelled by the ray inside the object will help me find the volume.


 I suggest actually going through one or two of the mged tutorials.  I
 think there is confusion because you’re trying to understand terms without
 actually using the tools.  Especially if you plan on writing code, you
 probably need some basic familiarity with mged, gqa, and rtweight.

 The approach you suggest is undesirable as it can fail on extremely small
 and large objects.  If you need to sample, we have tools already that do
 this well — it’d be better to refactor them into an API that you query.
 For some combinations, ones comprising single primitives or disjoint
 objects, you wouldn’t need to sample at all and can evaluate an exact
 solution.

 Surface area would be found by tessellating the object and summing the
 areas of the triangle.


 This would be merely an approximation.

 If there is any mathematical alternative to finding the volume and surface
 area of combinations, it'll be really helpful. Centroid is still pending.


 You’re going to waste time trying to tackle too many things at once.
 Half-solutions are not at all useful.  I suggest focusing on just one small
 incremental change/improvement, if you’re trying to develop a patch.

 Cheers!
 Sean


I'm sorry I'm rushing this too much. I am trying to develop my proposal for
the Object-Oriented C++ Geometry API project and I want to include adding
features like Centroid, Volume and Surface Area of the primitive in the
interface. I discussed with Daniel and he said, it should work for
combinations as well. So, I was trying to understand combinations and how
to implement these features in it's case.
I will look into the tools you mentioned here and do my homework.
I was a bit frustrated because I wasn't getting a clue as to what to do and
hence started asking confusing questions!

Sorry if this caused an inconvenience.

With Regards,
Kalpit Thakkar

PS : I'll come back after doing homework with better questions :)



 --
 Dive into the World of Parallel Programming The Go Parallel Website,
 sponsored
 by Intel and developed in partnership with Slashdot Media, is your hub for
 all
 things parallel software development, from weekly thought leadership blogs
 to
 news, videos, case studies, tutorials and more. Take a look and join the
 conversation now. http://goparallel.sourceforge.net/
 ___
 BRL-CAD Developer mailing list
 brlcad-devel@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/brlcad-devel


--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/___
BRL-CAD Developer 

Re: [brlcad-devel] GSoC 2015 Introduction

2015-03-20 Thread Christopher Sean Morrison

On Mar 19, 2015, at 7:33 PM, Ilinca Andrei andrei.ilinc...@gmail.com wrote:

 Kintel advised me to aim towards creating a common parser for both openscad 
 and brl-cad and relicense that as LGPL or BSD/MIT. He said we could either 
 refactor existing openscad code into a clean component, or rewrite the parser 
 and retrofit it into openscad. The former is a bit messy but safer - the 
 latter would be preferable but is likely a fair bit of work. What is your 
 advice regarding this matter?

We would prefer bsd/mit license, but as far as which approach would be better — 
that’s not something I can fully answer without researching the situation in 
depth.  All I can offer is industry observation.  You being unfamiliar with the 
existing code will undoubtedly be biased towards a rewrite.  That’s a position 
*most* programmers prefer taking when presented with a refactor vs rewrite.  
However, most research on the subject has shown it’s nearly always better to 
refactor.  Exceptions are when you’re changing entire paradigms, sometimes when 
you’re changing languages, or when it’s just not very much or the code is 
young.  The bigger and more mature the code, the less likely it’ll be cost 
effective.

That said, I know very little about the modular status of their code, its 
age/maturity, its complexity, or the level of effort that might be involved.  
Just recognize your own bias when estimating, and if you work with them to 
estimate that effort, you should be able to answer the question better than 
anyone.  Summary: break down both those options into a set of at least 10 
subtasks and estimate how long each might take, show them your estimates and 
see if they concur, then you’ll have a better plan on how to proceed.

 I understood a bit more about their internal structure (their compile table 
 was very useful too) and there are 2 types of OpenSCAD files: *.scad- 
 normal ones, providing the full list of features and *.csg , which are a 
 subset that only contain a smaller set of features and those are basically a 
 tree describing the model using a defined set of operators. So, if for the 
 .scad file ,the converting flow would be .scad - (parse) - AST - 
 (evaluate) - Node Tree , for the .csg file that would turn into .csg - 
 (parse) - Node Tree, leaving out the evaluating part. He said that, if I go 
 for the .csg - .g first, a good way to start would be this. What is your 
 opinion?

I have no basis with their code or that module to have an opinion on whether 
that’s a good way.  I’m would have to explore and do extensive homework (which 
you should be doing).  Doing .csg to .g first does sound intrinsically less 
risky on the surface simply because there’s not an intermediate representation 
and evaluation step.  Incremental steps that demonstrate functionality is 
desirable.

 They have also told me about FreeCAD and their python parser. I believe I 
 could utilize that python code to quickly establish a .csg to .g converter 
 (that might be good for prototyping, testing etc.). The only problem will be 
 using it in brl-cad's binary, since brl-cad uses C/C++. A C++ component could 
 be build later, separately, but will take longer time. Do you think I should 
 start working on it ?

We would prefer something that will integrate with our newly developing 
geometry conversion (GCV) API.  Binding through to python can work but is not 
ideal (especially for large complex models with lots of detail).  If you went 
with a refactoring approach, would that also be python code or C/C++ code?

 A beneficial aspect for both orgs would be to also make (if time allows) a .g 
 - .scad converter. Kindel suggested that if we successfully develop a .scad 
 - .g one, to reverse the algorithm wouldn't be so hard. I believe this would 
 (very probably) overcome the GSoC timeline but I'm willing to work until 
 October 1st (when school starts) if needed in order to complete both 
 converters. Do you think its a good idea or its too much to ask?

Going .g to .scad would be very easy, but I agree that you almost certainly 
will not have time during GSoC to do both (unless you’re just that awesome). ;) 
 If and when you start going down that route, we can certainly help you 
navigate the BRL-CAD .g API for creating that exporter.  We have LOTS of 
examples you can follow that are very similar to what you’ll need.

Cheers!
Sean

--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net

Re: [brlcad-devel] Combination in LIBRT

2015-03-20 Thread Christopher Sean Morrison

On Mar 20, 2015, at 5:35 PM, Kalpit Thakkar ceasy...@gmail.com wrote:

 I'm sorry I'm rushing this too much. I am trying to develop my proposal for 
 the Object-Oriented C++ Geometry API project and I want to include adding 
 features like Centroid, Volume and Surface Area of the primitive in the 
 interface. I discussed with Daniel and he said, it should work for 
 combinations as well. So, I was trying to understand combinations and how to 
 implement these features in it's case. 
 I will look into the tools you mentioned here and do my homework.
 I was a bit frustrated because I wasn't getting a clue as to what to do and 
 hence started asking confusing questions!

No problem at all asking questions — you shouldn’t hesitate to engage in 
discussions.  That goes for everyone new here.  ;-)

Just the less researched or more vaguely worded a question (e.g., an open-ended 
question asking for guidance), the more difficult it is to give you a useful 
reply.  We want to help each other, we enjoy solving problems!  When you do 
your homework and ask detailed or “hard” questions, those are really great to 
see.

Of course by the time you do that, you just might end up answering your own 
question or someone else’s question.  If you do, share your successful 
understandings, your eureka moments.  It can be exciting!  That’s when you 
start becoming a productive contributor to open source and is what this program 
is all about.

Cheers!
Sean


--
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
___
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel