Copyright | Written by David Himmelstrup |
---|---|

License | Unlicense |

Maintainer | lemmih@gmail.com |

Stability | experimental |

Portability | POSIX |

Safe Haskell | None |

Language | Haskell2010 |

Implementation of ternary plots: https://en.wikipedia.org/wiki/Ternary_plot

## Synopsis

- type ACoord = Double
- type BCoord = Double
- type CCoord = Double
- ternaryPlot :: Int -> (ACoord -> BCoord -> CCoord -> PixelRGBA8) -> Tree
- toCartesianCoords :: ACoord -> BCoord -> (Double, Double)
- toOffsetCartesianCoords :: ACoord -> BCoord -> (Double, Double)
- fromCartesianCoords :: Double -> Double -> (ACoord, BCoord, CCoord)

# Documentation

:: Int | Pixels in the X-axis. More pixels => higher quality. |

-> (ACoord -> BCoord -> CCoord -> PixelRGBA8) | a+b+c=1. A=1 is the left-most position, B=1 is the top-most position, and C=1 is the right-most position. |

-> Tree |

Creates a centered ternary plot with a width of 5.

Example:

ternaryPlot 100 $ \aCoord bCoord cCoord -> promotePixel $ let red = round $ aCoord*255 green = round $ bCoord*255 blue = round $ cCoord*255 in PixelRGB8 red green blue

toCartesianCoords :: ACoord -> BCoord -> (Double, Double) Source #

Compute the XY coordinates from ternary coordinates.
Note that `CCoord`

is given because `a+b+c=1`

.