Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
An implementation of bubble sets without the use of external libraries.
Java
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
.settings
src/main/java/setvis
.checkstyle
.classpath
.gitignore
.project
LICENSE
pom.xml
readme.md

readme.md

Bubble Sets

This is an implementation of bubble sets without the use of external libraries.

This project can be build in eclipse as well as with Maven. Use mvn install to generate jars in the target/ directory. The Bubble-Sets-X.X.X.jar contains the API for the bubble sets and Bubble-Sets-X.X.X-example.jar contains a little example program showing the bubble sets. Alternatively the project can be used as dependency in other Maven projects (see below).

To get started, you can use the following code:

// a list of groups of rectangles --
// bubble set will try to create an outline with
// as little overlap between the groups as possible
List<Rectangle2D[]> items = ...;

// using bubble set outlines
SetOutline setOutline = new BubbleSet();

// make the outlines smooth
AbstractShapeGenerator shapeGenerator = new BezierShapeGenerator(setOutline);

// generate shapes for each group
// the shapes can be drawn by a Graphics object
// as passed by a component's paint method
Shape[] shapes = shapeGenerator.createShapesFor(items);

A more advanced example uses groups which can also define lines that guide the iso-contour. It also shows a possible use within a paint method:

@Override
public void paint(final Graphics gfx) {
    // using graphics 2d
    Graphics2D g = (Graphics2D) gfx;

    // the list of groups
    List<Group> items = null;

    // use bubble sets and make the outlines smooth and less complex
    // to draw by simplifying the raw points
    AbstractShapeGenerator shapeGenerator = new ShapeSimplifier(
            new BSplineShapeGenerator(new ShapeSimplifier(
                    new PolygonShapeGenerator(new BubbleSet()))), 2.0);

    // generate shapes for each group
    Shape[] shapes = shapeGenerator.createShapesForGroups(items);

    for (Shape shape : shapes) {
        // drawing the content
        g.setColor(Color.ORANGE);
        g.fill(shape);

        // and then the outlines
        g.setColor(Color.BLACK);
        g.draw(shape);
    }
}

The following set outlines are available:

  • setvis.ch.ConvexHull
  • setvis.bubbleset.BubbleSet

And the following shape generators:

  • setvis.shape.PolygonShapeGenerator
  • setvis.shape.BezierShapeGenerator
  • setvis.shape.BSplineShapeGenerator
  • setvis.shape.ShapeSimplifier (reduces the shape complexity)

Maven Integration

In order to use bubble sets within a Maven project you can use the following dependency (in the <dependencies> section)::

<dependency>
  <groupId>joschi-mvn</groupId>
  <artifactId>Bubble-Sets</artifactId>
  <version>0.0.1</version>
</dependency>

However, this requires an additional repository in the repositories section (<repositories>) of the pom.xml file:

<repository>
    <id>joschi</id>
    <url>http://josuakrause.github.io/info/mvn-repo/releases</url>
</repository>
Something went wrong with that request. Please try again.