Marey.Anim 0.7.0

dotnet add package Marey.Anim --version 0.7.0
                    
NuGet\Install-Package Marey.Anim -Version 0.7.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Marey.Anim" Version="0.7.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Marey.Anim" Version="0.7.0" />
                    
Directory.Packages.props
<PackageReference Include="Marey.Anim" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Marey.Anim --version 0.7.0
                    
#r "nuget: Marey.Anim, 0.7.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Marey.Anim@0.7.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Marey.Anim&version=0.7.0
                    
Install as a Cake Addin
#tool nuget:?package=Marey.Anim&version=0.7.0
                    
Install as a Cake Tool

Marey.Anim

Animation for Marey, a dimensionally-typed visualization system for F#. An animation is a pure function of time, not a mutation.

#r "nuget: Marey.Anim"

open Marey

let zoom = Anim.tween 2.0<s> 0.0<m> 100.0<m> |> Anim.ease Ease.cubicInOut

zoom |> Anim.at 1.0<s>        // 50.0<m>, and the type says so
zoom |> Anim.atFraction 0.25  // seek anywhere, in any order, any number of times

An Anim<'a> is a duration and a function from a time to a value. Nothing is stepped, nothing accumulates, and nothing has to be played from the start to see frame 900 — which is what a mutable scene graph cannot offer, and what a scrubbable timeline needs.

What is in it

  • The algebra. pure', map, map2, andThen, stretch, ease and tween, built over ofSeconds and ofFraction — with the associativity, identity and composition laws property-tested rather than asserted in a comment.
  • A seek that is total. Anim.at clamps its argument to [0, duration], so a shorter component of a map2 holds its final value through the tail instead of running off, and andThen is well-defined at every instant. The normalised clock is deliberately not clamped, which is what makes an overshooting ease overshoot.
  • Twenty-eight easing functions — quad, cubic, quart, sine, expo, circ, back, elastic and bounce, each in, out and in-out, plus linear. The law that every one of them starts at 0 and ends at 1 is quantified over the whole catalogue by reflection, so a new one cannot be added without being checked. Ease.backOut overshoots past its target and comes back, because nothing clamps the fraction.
  • Arc-length path morphing. Morph.paths flattens two PathSeg[] to a common arc-length parameterisation, pairs their subpaths, and interpolates — so a square becomes a triangle at a steady speed rather than at a steady vertex index. The pairing, sample count and closure policy are stated in MorphOptions rather than hidden.
  • Interpolation of anything Marey.Core can interpolate, including affine transforms, which tween through a decomposition into translate/rotate/scale/skew — so a half-turn rotates rather than collapsing through the zero matrix.

Rendering one

Marey.Anim is generic in what it animates and mentions no Figure: tweening a float<m> does not make you install the grammar. To render an Anim<Figure>, lay out once for the whole shot and draw each frame inside that arrangement:

let shot = Chart.arrangeUnion 32 TextMeasure.approx extent (fun u -> Anim.atFraction u anim)
let frame u = Chart.toSceneIn TextMeasure.approx shot (Anim.atFraction u anim)

Re-laying out per frame makes the panel breathe — the plot rectangle is what is left after the widest tick label has taken its room, so a domain gaining a digit moves the axis while the data is what is supposed to be moving. arrangeUnion sizes the gutters against every sampled state at once and pins the unit prefix to the same union, so neither the panel nor the axis title steps mid-shot.

Depends only on Marey.Core, and is Fable-compatible.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Marey.Anim:

Package Downloads
Marey.Plot

Themes, palettes, constraint layout, and the axis/legend compiler that turns figures into Scene IR.

Marey.Sim

Simulation for Marey: ODE integrators typed by units of measure (Euler, RK4, Dormand-Prince, velocity Verlet, leapfrog), trajectories that seek like any other animation, invariants, events and collisions, Poincare sections, pathlines and particles, finite-difference heat, wave and Poisson solvers, and fluids by stable fluids and lattice Boltzmann.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.7.0 243 10/17/2026
0.6.0 267 10/11/2026
0.5.0 234 10/10/2026
0.4.0 226 10/8/2026
0.3.1 173 10/5/2026
0.3.0 173 10/5/2026