Giter VIP home page Giter VIP logo

plankton's Introduction

Plankton

Build Status

Description

Plankton is a flexible and efficient library for handling n-gonal meshes. Plankton is written in C# and implements the halfedge data structure. The structure of the library is loosely based on Rhinocommon's mesh classes and was originally created for use within C#/VB scripting components in Grasshopper.

Plankton is still in the very early stages of development and as such things may break from time to time without warning. If you have any ideas for functionality that you would like to see in the project, please open a ticket or get in touch via the Plankton Grasshopper Group.

Features

  • Flexible – Plankton can represent n-gonal meshes. There is no restriction to the number of sides that a face can have.
  • Fast – Efficient adjacency queries (traversals) are provided by the underlying halfedge data structure. These operations, such as finding the faces adjacent to a particular vertex, are O(n) where n is the number of elements returned.
  • Robust – Several Euler operators have been implemented (such as edge-collapsing, and face-splitting) that allow the user to modify the topology of a mesh without worrying about the specifics of the data structure.
  • Compatible – Plankton can interface with the face-vertex mesh representation, making it straightforward to use alongside Turtle.

Future

Plankton was created as a framework for our own work with meshes in Grasshopper. Over time we hope to make it much more robust and improve its functionality with additions such as:

  • dynamic properties – from mesh normals to custom attributes (such as forces on mesh vertices)
  • more topological and geometrical operators – such as Conway's operators and remeshing
  • subdivision surfaces
  • polyline support in Grasshopper – to improve compatibility with other Grasshopper add-ons
  • documentation and examples
  • proper support for Dynamo/DesignScript

There is, of course, a line to be drawn between algorithms that belong in the library and algorithms that are simply written for the library. We hope to iron out such details in due course, along with guidelines for contributing to the project.

License

Plankton an open source library and is licensed under the Gnu Lesser General Public License (LGPL). We chose this license because we believe that it will encourage those who improve the library to share their work whilst not requiring the same of those who simply use the library in their software.

Plankton is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

Plankton is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with Plankton.  If not, see
<http://www.gnu.org/licenses/>.

Using Plankton with Grasshopper

Pre-compiled binaries

The easiest way to use Plankton is to download the latest release. Both the core library, plankton.dll, and the Grasshopper assembly, plankton.gha, should be copied into Grasshopper's "libraries" folder (usually %appdata%\Roaming\Grasshopper\Libraries\). Rhino will need to be restarted if it is already running and don't forget to unblock the assemblies!

To use Plankton from a C#/VB scripting component in Grasshopper you'll need to reference the library in the script. Right-click on the component, choose "Manage Assemblies" and using the dialog box, select both of the assemblies. See here for more information about writing scripts that use Plankton.

Building from source

If you want to keep up with the latest developments, or if you wish to contribute to the project, then you'll need to compile Plankton on your own computer. Plankton is built against .NET 4.0 so you'll need Visual Studio 2010 or later (or SharpDevelop). Resolving the dependencies should be as easy as dropping Grasshopper.dll, GH_IO.dll and Rhinocommon.dll into the lib/ folder. The solution also includes a test project which uses NUnit.

Once you've built the library continue with the instructions for pre-compiled binaries.

Thanks

Thanks to Dave Stasiuk, Giulio Piacentino, Kristoffer Josefsson, Harri Lewis, John Harding, Daniel Hambleton.


Plankton © 2013 Daniel Piker and Will Pearson.

plankton's People

Contributors

dan-piker avatar davestasiuk avatar pearswj avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.