# Implicit plots in ASVG via Interval Arithmetic, D3 and Function Plot

## Background

An implicit function is one which has variables (often *x* and *y*) "mixed together", something like:

*f*(*x*, *y*) = *y*^{2} + 2 sin(*x*^{2}*y*^{2 }) + 6*x*^{2} − 5*y* ,

as opposed to **explicit functions** where we usually express *y* in terms of *x* only, something like:

*y* = *f*(*x*) = 4 sin(*x*^{2} ).

When we try to plot implicit functions using computers, there are many challenges since there is often more than one value of *y* for each value of *x*, and joining the points all in the correct order can be problematic, not to mention the need to cater for the many discontinuities that often arise.

## One solution - Interval Arithmetic

Function Plot by Mauricio Poppe is an interesting javascript library that sits on top of D3, a library for data visualization.

To address some of the issues involved in plotting implicit functions (as well as solving many explicit function plot challenges), Function Plot uses a technique called Interval Arithmetic, which ensures each pixel in a vertical interval is catered for using variable-width intervals, as opposed to most graphing approaches that have fixed-width intervals.

## Employing the technique within ASCIIsvg

I mostly use my own modifications of ASCIIsvg, a javascript library that creates SVGs (see a demo here: ASCIIsvg-IM.js Demo and Syntax).

The implict function examples below incorporate Poppe's interval arithmetic approach into ASCIIsvg.

Choose function:

Graph of

### More examples

See this library in action in Differentiation of Implicit Functions.

### Improvements

The implementation on this page still makes use of D3 and most of the Function Plot library. I feel it should not rely on D3 at all, and most of Function Plot is not relevant. I'll continue to try to reduce the network and processing payload.