• Login
sketchucation logo sketchucation
  • Login
ℹ️ GoFundMe | Our friend Gus Robatto needs some help in a challenging time Learn More

Does someone feel fit to adjust CGAL for usage out of ruby?

Scheduled Pinned Locked Moved Developers' Forum
13 Posts 7 Posters 829 Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    a4chitect
    last edited by 7 Mar 2008, 21:18

    Link Preview Image
    The Computational Geometry Algorithms Library

    favicon

    (www.cgal.org)

    it would have been great having these processing algoritmhs available from within ruby scripts, does someone feel like preparing this workpath? is it possible?

    The Computational Geometry Algorithms Library (CGAL), offers data structures and algorithms like triangulations (2D constrained triangulations and Delaunay triangulations in 2D and 3D), Voronoi diagrams (for 2D and 3D points, 2D additively weighted Voronoi diagrams, and segment Voronoi diagrams), Boolean operations on polygons and polyhedra, arrangements of curves and their applications (2D and 3D envelopes, Minkowski sums), mesh generation (2D Delaunay mesh generation and 3D surface mesh generation, skin surfaces), geometry processing (surface mesh simplification, subdivision and parameterization, as well as estimation of local differential properties, and approximation of ridges and umbilics), alpha shapes, convex hull algorithms (in 2D, 3D and dD), operations on polygons (straight skeleton and offset polygon), search structures (kd trees for nearest neighbor search, and range and segment trees), interpolation (natural neighbor interpolation and placement of streamlines), shape analysis, fitting, and distances (smallest enclosing sphere of points or spheres, smallest enclosing ellipsoid of points, principal component analysis), and kinetic data structures.

    1 Reply Last reply Reply Quote 0
    • N Offline
      noelwarr
      last edited by 20 Nov 2012, 09:01

      FOUR YEARS LATER!

      I have something in this direction working. Let me know if you're still interested.

      1 Reply Last reply Reply Quote 0
      • C Offline
        Chris Fullmer
        last edited by 20 Nov 2012, 10:39

        Dude, we all are interested. Just post it!

        Lately you've been tan, suspicious for the winter.
        All my Plugins I've written

        1 Reply Last reply Reply Quote 0
        • N Offline
          noelwarr
          last edited by 20 Nov 2012, 16:30

          I'll publish it when I have a moment. Its still in development and no documentation. A couple more months should do the trick. These are the classes I've wrapped so far.

          rb_Offset_polygon_2
          rb_Point_2
          rb_Iso_cuboid_3
          rb_Nef_polyhedron_3
          rb_Polygon_with_holes_2
          rb_Polygon_2
          rb_Halffacet
          rb_X_monotone_curve_2
          rb_Offset_polygon_with_holes_2
          rb_SVertex
          rb_Aff_transformation_3
          rb_SHalfedge
          rb_Polygon_set_2
          rb_Lazy_exact_nt
          rb_Vertex
          rb_Point_3

          To compile it you'll need ruby, cgal and rice installed on your system. I'm on linux but if you get a windows or mac version compiled I'll post it too.

          If you can't wait, checkout my first shot at it (http://code.google.com/p/rgal/). Don't get used to the structure, though. I've changed most of how it works

          1 Reply Last reply Reply Quote 0
          • A Offline
            Aerilius
            last edited by 20 Nov 2012, 19:38

            That sounds good!!!

            As for compiling, I haven't yet tried much with Ruby C extensions.
            Since SketchUp on Linux runs in Wine (= Windows-like environment), wouldn't we need to compile it for Windows in any case? (Except that I have some plugins that bridge over and call faster native Linux tools.)
            Did you just do it for use in Ruby, or specifically for SketchUp?

            1 Reply Last reply Reply Quote 0
            • D Offline
              Dan Rathbun
              last edited by 20 Nov 2012, 20:31

              Shame on you! . The rb_ prefix belongs to the Ruby Core !!

              Choose your own prefix, like cgal_

              I'm not here much anymore.

              1 Reply Last reply Reply Quote 0
              • N Offline
                noelwarr
                last edited by 20 Nov 2012, 23:00

                @Aerilius Yes, I believe you do need to compile it under windows/mac. I think though that once someone has done that, the dll can then be used on other similar operating systems. The project I am working on doesn't interact with Sketchup directly. I have a Sketchup plugin that reads the Sketchup model and uploads it to a server. It is on the server that I have this library performing various geometric tasks. The result is then fed back into the Sketchup model. The library is indeed Sketchup independant. CGAL won't know what to do with a Sketchup::Point You'd have to do something like...
                p = Sketchup::Point3d(1,2,3) CGAL::Point_3::build(p.to_a)

                @Dan Those aren't the class names. Just a list of my cpp files that I copied and pasted. Rice takes care of creating the classes for me. I don't know what it does "under the hood" though.

                1 Reply Last reply Reply Quote 0
                • D Offline
                  Dan Rathbun
                  last edited by 20 Nov 2012, 23:23

                  @noelwarr said:

                  @Dan Those aren't the class names. Just a list of my cpp files that I copied and pasted. Rice takes care of creating the classes for me. I don't know what it does "under the hood" though.

                  Really? then I think you should edit your first post, as you clearly said:
                  @noel said:

                  These are the classes I've wrapped so far.

                  However I was really referring to the C/C++-side function name prefixes.
                  Use your own prefixes, please not the ones the Ruby Core uses.
                  Or tell Rice to use "cgal_" as your function name prefixes.

                  And I am glad to see the Ruby exposed methods are all wrapped in a CGAL module !

                  I'm not here much anymore.

                  1 Reply Last reply Reply Quote 0
                  • A Offline
                    Aerilius
                    last edited by 21 Nov 2012, 02:43

                    Compiled fine and works fine in irb!
                    Tomorrow I'll try if I can cross-compile it.

                    Once you upload the latest version, can you update the requirements (saves a little research and time):
                    %(#000000)[sudo apt-get install **libcgal-dev libgmp-dev libmpfr-dev geom-view ruby-dev rubygems** sudo gem install **json rice**]

                    I had to modify dev.rb a little (json files were in additional quotes and evaled to string instead of hash): dev.rb

                    rgal.png

                    1 Reply Last reply Reply Quote 0
                    • thomthomT Offline
                      thomthom
                      last edited by 21 Nov 2012, 11:11

                      @dan rathbun said:

                      However I was really referring to the C/C++-side function name prefixes.
                      Use your own prefixes, please not the ones the Ruby Core uses.
                      Or tell Rice to use "cgal_" as your function name prefixes.

                      If it's just the internal C functions then it would make no difference what their name are. It's only the publicly exposed functions that matter.

                      Thomas Thomassen — SketchUp Monkey & Coding addict
                      List of my plugins and link to the CookieWare fund

                      1 Reply Last reply Reply Quote 0
                      • D Offline
                        driven
                        last edited by 24 Nov 2012, 02:52

                        I guess the starting point on a mac is instal cgal + depenencies...
                        Homebrew to the rescue

                        cgal version 3.8 for OS X
                        The formula for cgal was recently updated to version 3.8.

                        To install cgal on your Mac, open your Terminal application and run the following commands;

                        brew update
                        brew install cgal

                        This package, cgal, depends on;
                        cmake
                        boost
                        gmp
                        mpfr

                        john

                        learn from the mistakes of others, you may not live long enough to make them all yourself...

                        1 Reply Last reply Reply Quote 0
                        • N Offline
                          noelwarr
                          last edited by 26 Nov 2012, 12:24

                          Here is is. Bare in mind it is work in progress. I've been working on it for months and spend a good few hours on it everyday. If anyone wants to contribute please let me know as there are a number of things that should be made clear before you get stuck in. I've made a lame attempt at documenting it. If anyone is seriously interested in using this they are gonna have to plough their way through cpp code. While the're doing this they might as well add to the documentation. I'm using comments and rdoc to automatically generate the docs. Have a look at ruby/Aff_transformation_3.rb to see how it works.

                          As far as dependencies go: cgal, gmp, mpfr, boost, qt3 and rice are necessary (I no longer use geomview)

                          http://noelwarr.github.com/rgal

                          DISCLAIMER: There is another project http://code.google.com/p/cgal-bindings/ that is writing language agnostic wrappers for CGAL using SWIG. The geometry factory is actively involved in this project, but I have too say it's rate of growth leaves much to be desired. It makes more sense to go in that direction but I found SWIG too complex to use.

                          1 Reply Last reply Reply Quote 0
                          • N Offline
                            noelwarr
                            last edited by 27 Nov 2012, 10:28

                            I've been toying around on AWS today and I realised something. One of the RGAL's dependencies is Qt3. The precompiled CGAL library in the Ubuntu repository is NOT compiled with Qt3. This means that you have to compile CGAL yourself which is always a hassle. I don't know about other platforms though. It's possible that mac's precompiled CGAL works a charm

                            If bootstrap fails at rb_Nef_polyhedron_3.cpp because it can't find qapplication.h, you have two options.
                            *Either comment out the show method in the cpp file (dont forget to comment out the rice refference to it at the bottom of the file) and the two lines (qapplication and Qt_widget) in the rb_Nef_polyhedron_3.h file
                            *Or get your act together and compile CGAL from scratch remembering to set the Qt3 flag to true.

                            Ideally, it would be nice to have the Nef_polyhedron return a qt_widget object that ruby can then put in its own qt application. I have the feeling that that just isn't possible though.

                            1 Reply Last reply Reply Quote 0
                            • 1 / 1
                            • First post
                              Last post
                            Buy SketchPlus
                            Buy SUbD
                            Buy WrapR
                            Buy eBook
                            Buy Modelur
                            Buy Vertex Tools
                            Buy SketchCuisine
                            Buy FormFonts

                            Advertisement