File:Purpy Pupple's 2D Metaballs.jpg

Original file(616 × 668 pixels, file size: 168 KB, MIME type: image/jpeg)

Captions

Captions

Add a one-line explanation of what this file represents

Summary

edit
Description
English: A program I made when I was 16. It was written in C++ and uses FLTK. The program allows the user to draw lines or create metaballs.

The wonderful Metaball Program!
         ______ _______        ______                         _____
|\    /||          |     /\    |     \   /\    |      |      /
| \  / ||_____     |    /  \   |_____/  /  \   |      |      \____
|  \/  ||          |   /----\  |     \ /----\  |      |           \
|      ||______    |  /      \ |_____//      \ |_____ |_____ _____/

///////////////////////////////////////////////////////////////////

INTRODUCTION

When the program first starts up, it is by default in
'insert metaball' mode: click around the canvas to draw
metaballs. Right click adds a negative metaball (blue);
and left click adds a positive metaball (red). The
slider controls the size of the metaball to add. (Note:
if the size of the metaball is too small, it may not be
visible). 

Since blue metaballs are red metaballs with a negative size,
they may cancel each other out if placed too close together.
Conversely, metaballs of the same size would add to each other.

The program also has a 'brush' mode, in which one clicks
and drags to draw whatever one wishes. Likewise, right click
is blue and left click is red.

//////////////////////////////////////////////////////////////////

OVERVIEW OF BUTTONS:

TOP TOOLBAR, from left to right, are as such:

Ball:       Set 'insert metaball' mode. If it is already set
            to this mode, it is red.

Undo:       Undoes the last metaball inserted (does not affect
            brush strokes, or grow/shrink etc operations).
            May be used multiple times until there are no balls
            left. Works on the 'random' button.

Redo:       Redoes the last metaball that was undone. May be
            used once.

Thicker:    Makes all metaballs thicker. Affects future metaballs
            added too.

Thinner:    Opposite of thicker. 

Redshift:   Make all red metaballs larger and blue ones smaller.
            Doesn't affect future metaballs.

Blueshift:  Make all blue metaballs larger and red ones smaller.
Grow:       Increase the size of all metaballs. Affects future
            metaballs.

Shrink:     Opposite of grow.

Random:     Add a metaball of random size and location.

===================================================================

BOTTOM TOOL BAR

Brush:      Set brush mode. In brush mode, one clicks and drags
            on the canvas to draw things. As with metaballs, 
            left click is red; right click is blue. However,
            brush strokes do not cancel each other out. If this
            mode is already selected, this button is red.

Undo:       Undoes the last brush stroke, without affecting
            metaballs or any other operation. May be used more
            than once.

Redo:       Redoes the last undone brush stroke. May be used
            once.

Thicker:    Make all brushstrokes thicker. Does not affect future
            brush strokes.

Thinner:    Opposite of thicker.

Redshift:   Make red brushtrokes thicker and blue ones thinner.
            Does not affect future brush strokes.

Blueshift:  Opposite of redshift.

Refresh:    Refresh the canvas. (click this if your drawing does
            not appear).

Clear:      Clear all metaballs and brushstrokes, and reset all
            settings in "thicker", "thinner", "grow", etc in
            metaballs.

///////////////////////////////////////////////////////////////////

List of Known bugs:

1) If one clicks and drags in brush mode, but does not release the
   mouse even when outside the widget, the brushstroke will extend
   outside the widget.

2) The brushstroke's size for the most recent brushstroke does
   not behave as intended. Sometimes, drawing with the brush tool
   would output brushstrokes of the default size, while the previous
   brushstroke would be changed to the current size.

3) If a single brushstroke is too long, the program will crash due
   to exceeding the vector's capacity.

4) Each new brushstroke appears 'below' previous brushstrokes, due
   to the direction of traversal of the brushstroke linked list when
   drawing brushstrokes.

///////////////////////////////////////////////////////////////////

FUTURE FEATURES TO ADD (if I have time)

1) Full redo implementation. At present, the program can only redo
   once, though it can undo many times.

2) Ability to hide or show any metaball or brushstroke.

3) Changing the z-axis of brushstrokes; i.e. which one is on top of
   which. Since each brushtroke is a node in a linked list, this is
   easy to achieve (though the GUI part is more tricky).

4) Antialiasing. 

5) Show position and sizes of metaballs (in case some metaballs are
   invisible).

Date
Source Own work
Author Purpy Pupple

Licensing

edit
I, the copyright holder of this work, hereby publish it under the following licenses:
w:en:Creative Commons
attribution share alike
This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
GNU head Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License.
You may select the license of your choice.

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current02:48, 3 February 2011Thumbnail for version as of 02:48, 3 February 2011616 × 668 (168 KB)Dllu (talk | contribs){{Information |Description ={{en|1=A program I made when I was 16. It was written in C++ and uses FLTK. The program allows the user to draw lines or create metaballs. <pre> <nowiki> The wonderful Metaball Program!

There are no pages that use this file.

Metadata