|
| 1 | + |
| 2 | +Megaplot is a TypeScript + WebGL engine for implementing high-performance, |
| 3 | +large-scale, interactive data visualizations. |
| 4 | + |
| 5 | +Visualizations rendered with Megaplot are: |
| 6 | + |
| 7 | +* Smooth — Visualizations should not be jittery or laggy and should respond |
| 8 | + quickly to user interaction. The API should make it easy for developers to |
| 9 | + carry out expensive operations without locking up. |
| 10 | +* Beautiful — Elements should be superbly designed and rendered with the |
| 11 | + greatest fidelity afforded by the platform. |
| 12 | +* Fast — Operations should be performed as quickly as possible without |
| 13 | + sacrificing the quality of the user experience. |
| 14 | +* Big — The engine should be able to handle as much data as the browser can |
| 15 | + receive and process. Data points should be able to number into the hundreds |
| 16 | + of thousands without significant degradation. |
| 17 | +* Accessible — Different viewers have different needs. Visualizations made with |
| 18 | + Megaplot should work for as many users as possible. While ultimately the |
| 19 | + appearance and functionality of a visualization made with Megaplot |
| 20 | + depends on the implementer, Megaplot should provide functionality to make |
| 21 | + it easy for implementers to make visualizations that are widely accessible. |
| 22 | + |
| 23 | +## Megaplot Benefits |
| 24 | + |
| 25 | +Compared to other web-based, data visualization rendering options, Megaplot |
| 26 | +offers these unique benefits: |
| 27 | + |
| 28 | +* Integrated Coordinate Systems — Many rendering environments assume a |
| 29 | + particular coordinate system (such as 2D pixel space or 3D world coordinates). |
| 30 | + Megaplot combines world coordinates and pixel coordinates. Objects can |
| 31 | + have positions in both systems, and these are additive. This allows the |
| 32 | + developer to achieve previously challenging effects such labels with fixed |
| 33 | + pixel offsets from particular world coordinates, or size minimums/maximums |
| 34 | + specified in pixels. |
| 35 | +* Interactive Vector Graphics at Scale — Megaplot is designed to render hundreds |
| 36 | + of thousands of data objects while still responding to user input. Data is |
| 37 | + expected to change in response to user interactions. |
| 38 | +* Ubiquitous Interruptible Animations — Sprite attributes are interpolated on |
| 39 | + the GPU for smooth animations frame-by-frame. Animations are interruptible, |
| 40 | + with most attributes preserving momentum between changes (no abrupt stop and |
| 41 | + restart). |
| 42 | + |
| 43 | +In addition to those benefits, Megaplot offers these features: |
| 44 | + |
| 45 | +* Scale - Render hundreds of thousands of datapoints. |
| 46 | +* High Fidelity — Objects rendered by Megaplot have shapes and borders computed |
| 47 | + on the GPU with vector-graphic precision. No pixelation of curves and other |
| 48 | + shapes when zoomed. |
| 49 | +* Declarative, Attribute-based API — Each Sprite has a number of attributes |
| 50 | + which can be set to define its position and appearance. |
| 51 | +* Hit Testing — To support mouse/touch interactivity, Megaplot provides a hit |
| 52 | + testing API wherein the developer can probe for which objects intersect a |
| 53 | + particular pixel coordinate of interest. |
| 54 | +* High-Performance Text — In a DOM context, glyphs of text are tiny vector |
| 55 | + images. While text with fixed coordinates can often be rendered quickly, text |
| 56 | + that moves can be slow. Megaplot uses a generated Signed Distance Field (SDF) |
| 57 | + texture for rendering glyphs efficiently at scale, commingled with other |
| 58 | + visual elements. |
| 59 | + |
0 commit comments