/// <summary> /// Performs the inverse of the projection done by <see cref="Sample"/> /// </summary> /// <param name="point">A point on the surface of this mesh</param> /// <returns>The primary sample space point that would have been projected there</returns> public Vector2 SampleInverse(SurfacePoint point) { var local = SampleWarp.FromUniformTriangle(point.BarycentricCoords); float x = triangleDistribution.SampleInverse((int)point.PrimId, local.X); return(new(x, local.Y)); }
public void Inverse_ShouldBeZero() { var bary = SampleWarp.ToUniformTriangle(new(0.1f, 0.1f)); var prim = SampleWarp.FromUniformTriangle(bary); Assert.Equal(0.1f, prim.X, 4); Assert.Equal(0.1f, prim.Y, 4); }