{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "{-# LANGUAGE ScopedTypeVariables, TypeOperators #-}\n", "import Data.Manifold\n", "import Data.Manifold.TreeCover\n", "import Data.Manifold.Web\n", "import Data.Manifold.Shade\n", "import Data.Manifold.Types\n", "import Data.Function.Affine\n", "import Math.LinearMap.Category\n", "import Math.LinearMap.Category.Derivatives\n", "import Data.VectorSpace\n", "import Linear (V2(..), _x, _y)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "test x = x`seq`putStrLn \"Ok\"" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Ok" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Ok" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import Graphics.Dynamic.Plot.R2\n", "import Data.Colour.Names\n", "import Data.Colour.Manifold\n", "\n", "colourscheme :: Shade' ℝ -> Shade (Colour ℝ)\n", "colourscheme = f `seq` \\(Shade' y e) -> f (Shade y $ dualNorm e)\n", " where Just (f :: Shade ℝ -> Shade (Colour ℝ))\n", " = rangeWithinVertices (1, maxc)\n", " [ (0, black) ]\n", " Just maxc = toInterior (grey :: Colour ℝ)\n", "test colourscheme\n", "\n", "colourscheme_nabla :: Shade' (V2 ℝ+>ℝ) -> Shade (Colour ℝ)\n", "colourscheme_nabla = f `seq` \\(Shade' y e) -> f (Shade y $ dualNorm e)\n", " where Just (f :: Shade (V2 ℝ+>ℝ) -> Shade (Colour ℝ))\n", " = rangeWithinVertices (zeroV, neutral)\n", " [ (V2 2 0-+|>1, red)\n", " , (V2 0 2-+|>1, green) ]\n", " Just neutral = toInterior (grey :: Colour ℝ)\n", "test colourscheme_nabla" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "gaußianPeak :: [ℝ²] -> ℝ -> PointsWeb ℝ² (Shade' ℝ)\n", "gaußianPeak ps δy = fromWebNodes euclideanMetric\n", " [ (xy, exp (-2*magnitudeSq xy) |±|[δy]) | xy <- ps ]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "GraphWindowSpecR2{lBound=-2.666666666666667, rBound=2.666666666666666, bBound=-1.4999999999999998, tBound=2.4999999999999987, xResolution=640, yResolution=480}" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "GraphWindowSpecR2{lBound=-2.666666666666666, rBound=2.6666666666666656, bBound=-1.4999999999999998, tBound=2.499999999999999, xResolution=640, yResolution=480}" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "GraphWindowSpecR2{lBound=-2.666666666666666, rBound=2.6666666666666656, bBound=-1.4999999999999993, tBound=2.4999999999999987, xResolution=640, yResolution=480}" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "GraphWindowSpecR2{lBound=-2.666666666666666, rBound=2.666666666666665, bBound=-1.4999999999999996, tBound=2.499999999999999, xResolution=640, yResolution=480}" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "δ = 0.01\n", "grid = [V2 x y | x<-[-2,-1.8..2], y<-[-1,-0.8..2]]\n", "\n", "plotWindow [plot . fmap colourscheme $ gaußianPeak grid δ ]\n", "plotWindow [plot . fmap colourscheme_nabla . differentiateUncertainWebFunction\n", " $ gaußianPeak grid δ ]\n", "plotWindow [plot . fmap (colourscheme_nabla . projectShade (lensEmbedding (1*∂id/∂_x)))\n", " . differentiateUncertainWebFunction . differentiateUncertainWebFunction\n", " $ gaußianPeak grid δ ]\n", "plotWindow [plot . fmap (colourscheme_nabla . projectShade (lensEmbedding ((1*∂id/∂_x)/∂id)))\n", " . differentiateUncertainWebFunction . differentiateUncertainWebFunction\n", " $ gaußianPeak grid δ ]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Haskell", "language": "haskell", "name": "haskell" }, "language_info": { "codemirror_mode": "ihaskell", "file_extension": ".hs", "name": "haskell", "version": "7.10.2" } }, "nbformat": 4, "nbformat_minor": 0 }