Point
A point of a function. Defined only in Time.
From unit structure defined in [BT08] Section 4.1
public sealed class Point : Element, IToCodeString, Unipi.Nancy.Utility.IStableHashCode, System.IEquatable<Point>
Inheritance Object → Element → Point
Implements IToCodeString, IStableHashCode, IEquatable<Point>
Properties
Type
Type identification property for JSON (de)serialization.
public string Type { get; }
Property Value
Time
Time for which the point is defined.
public Rational Time { get; }
Property Value
Value
Value of the point.
public Rational Value { get; }
Property Value
StartTime
public Rational StartTime { get; }
Property Value
EndTime
public Rational EndTime { get; }
Property Value
PointSlope
Slope, w.r.t. origin, of the point.
public Rational PointSlope { get; }
Property Value
IsInfinite
True if the value of the point is .
public bool IsInfinite { get; }
Property Value
IsPlusInfinite
True if the value of the point is .
public bool IsPlusInfinite { get; }
Property Value
IsMinusInfinite
True if the value of the point is .
public bool IsMinusInfinite { get; }
Property Value
IsZero
True if the value of the point is 0.
public bool IsZero { get; }
Property Value
IsOrigin
True if the point is
public bool IsOrigin { get; }
Property Value
Length
Length in time of the element. If the element is a Segment, it is strictly greater than 0. If the element is a Point, it is equal to 0.
public Rational Length { get; }
Property Value
IsFinite
True if the element has finite value.
public bool IsFinite { get; }
Property Value
Constructors
Point(Rational, Rational)
Constructor.
public Point(Rational time, Rational value)
Parameters
time
Rational
Time of the point.
value
Rational
Value of the point.
Methods
Zero(Rational)
Constructs a point with 0 as value.
public static Point Zero(Rational time)
Parameters
time
Rational
Time of the point.
Returns
Origin()
Constructs a point in (0, 0).
public static Point Origin()
Returns
PlusInfinite(Rational)
Constructs a point with as value.
public static Point PlusInfinite(Rational time)
Parameters
time
Rational
Time of the point.
Returns
MinusInfinite(Rational)
Constructs a point with as value.
public static Point MinusInfinite(Rational time)
Parameters
time
Rational
Time of the point.
Returns
ValueAt(Rational)
public Rational ValueAt(Rational time)
Parameters
time
Rational
Returns
IsDefinedFor(Rational)
public bool IsDefinedFor(Rational time)
Parameters
time
Rational
Returns
FromJson(String)
Deserializes a Point.
public static Point FromJson(string json)
Parameters
json
String
Returns
ToCodeString(Boolean, Int32)
Returns a string containing C# code to create this Point. Useful to copy and paste from a debugger into another test or notebook for further investigation.
public string ToCodeString(bool formatted, int indentation)
Parameters
formatted
Boolean
indentation
Int32
Returns
GetStableHashCode()
public int GetStableHashCode()
Returns
Scale(Rational)
Scales the point by a multiplicative factor.
public Element Scale(Rational scaling)
Parameters
scaling
Rational
Returns
Delay(Rational)
public Element Delay(Rational delay)
Parameters
delay
Rational
Returns
Anticipate(Rational)
public Element Anticipate(Rational time)
Parameters
time
Rational
Returns
VerticalShift(Rational)
Shifts the point vertically by an additive factor.
public Element VerticalShift(Rational shift)
Parameters
shift
Rational
Returns
Negate()
public Element Negate()
Returns
Inverse()
public Element Inverse()
Returns
Equals(Object)
public bool Equals(object obj)
Parameters
obj
Object
Returns
GetHashCode()
public int GetHashCode()
Returns
Equals(Point)
public bool Equals(Point other)
Parameters
other
Point
Returns
IsCertainlyAbove(Point, Point)
Returns true if the first point has always value higher than the second one. Does not consider time overlapping.
public static bool IsCertainlyAbove(Point a, Point b)
Parameters
a
Point
b
Point
Returns
IsCertainlyAbove(Point)
Returns true if the first point has always value higher than the second one. Does not consider time overlapping.
public bool IsCertainlyAbove(Point point)
Parameters
point
Point
Returns
IsCertainlyBelow(Point, Point)
Returns true if the first point has always value lower than the second one. Does not consider time overlapping.
public static bool IsCertainlyBelow(Point a, Point b)
Parameters
a
Point
b
Point
Returns
IsCertainlyBelow(Point)
Returns true if the first point has always value lower than the second one. Does not consider time overlapping.
public bool IsCertainlyBelow(Point point)
Parameters
point
Point
Returns
Addition(Element)
Sums the Point with an overlapping Element.
public Element Addition(Element element)
Parameters
element
Element
Returns
Element
The element resulting from the sum.
Exceptions
ArgumentException
Thrown if the point and the element do not overlap.
Addition(Point, Point)
Sums two Points that are defined for the same time.
public static Point Addition(Point a, Point b)
Parameters
a
Point
b
Point
Returns
Point
The point resulting from the sum.
Exceptions
ArgumentException
Thrown if the two points do not overlap.
Addition(Point)
Sums two Points that are defined for the same time.
public Point Addition(Point point)
Parameters
point
Point
Returns
Point
The point resulting from the sum.
Exceptions
ArgumentException
Thrown if the two points do not overlap.
Addition(Point, Segment)
Sums a Point to an overlapping Segment
public static Point Addition(Point point, Segment segment)
Parameters
point
Point
segment
Segment
Returns
Point
The point resulting from the sum.
Exceptions
ArgumentException
Thrown if point and segment do not overlap.
Addition(Segment)
Sums a Point to an overlapping Segment
public Point Addition(Segment segment)
Parameters
segment
Segment
Returns
Point
The point resulting from the sum.
Exceptions
ArgumentException
Thrown if point and segment do not overlap.
Subtraction(Element)
Subtracts the Point with an overlapping Element.
The operation does not enforce non-negative values.
public Element Subtraction(Element element)
Parameters
element
Element
Returns
Element
The element resulting from the subtraction.
Exceptions
ArgumentException
Thrown if the point and the element do not overlap.
Subtraction(Point, Point)
Subtracts two Points that are defined for the same time.
The operation does not enforce non-negative values.
public static Point Subtraction(Point a, Point b)
Parameters
a
Point
b
Point
Returns
Point
The point resulting from the subtraction.
Exceptions
ArgumentException
Thrown if the two points do not overlap.
Subtraction(Point)
Subtracts two Points that are defined for the same time.
The operation does not enforce non-negative values.
public Point Subtraction(Point point)
Parameters
point
Point
Returns
Point
The point resulting from the subtraction.
Exceptions
ArgumentException
Thrown if the two points do not overlap.
Subtraction(Point, Segment)
Subtracts a Point to an overlapping Segment
The operation does not enforce non-negative values.
public static Point Subtraction(Point point, Segment segment)
Parameters
point
Point
segment
Segment
Returns
Point
The point resulting from the subtraction.
Exceptions
ArgumentException
Thrown if point and segment do not overlap.
Subtraction(Segment)
Subtracts a Point to an overlapping Segment
The operation does not enforce non-negative values.
public Point Subtraction(Segment segment)
Parameters
segment
Segment
Returns
Point
The point resulting from the subtraction.
Exceptions
ArgumentException
Thrown if point and segment do not overlap.
Minimum(Element)
Computes the minimum of the Point and the given Element over their overlapping part.
public List<Element> Minimum(Element element)
Parameters
element
Element
Returns
List<Element>
The s resulting from the minimum, wrapped in a list due to inheritance.
Minimum(Point, Point)
Computes the minimum of two Points that are defined at the same time.
public static Point Minimum(Point a, Point b)
Parameters
a
Point
b
Point
Returns
Point
The point resulting from the minimum.
Exceptions
ArgumentException
Thrown if the two points do not overlap.
Minimum(Point)
Computes the minimum of two Points that are defined at the same time.
public Point Minimum(Point b)
Parameters
b
Point
Returns
Point
The point resulting from the minimum.
Exceptions
ArgumentException
Thrown if the two points do not overlap.
Minimum(Point, Segment)
Computes the minimum of a Point to an overlapping Segment.
public static Point Minimum(Point point, Segment segment)
Parameters
point
Point
segment
Segment
Returns
Point
The point resulting from the minimum.
Exceptions
ArgumentException
Thrown if point and segment do not overlap.
Minimum(Segment)
Computes the minimum of a Point to an overlapping Segment.
public Point Minimum(Segment segment)
Parameters
segment
Segment
Second operand
Returns
Point
The point resulting from the minimum.
Exceptions
ArgumentException
Thrown if point and segment do not overlap.
Minimum(IReadOnlyList<Point>)
Computes the minimum of a set of points.
public static Point Minimum(IReadOnlyList<Point> points)
Parameters
points
IReadOnlyList<Point>
Points of which the minimum has to be computed.
Returns
Point
The point resulting from the overall minimum.
Exceptions
ArgumentException
Thrown if the points do not overlap.
InvalidOperationException
Thrown if the set of points is empty.
Maximum(Element)
Computes the maximum of the Point and the given Element over their overlapping part.
public List<Element> Maximum(Element element)
Parameters
element
Element
Returns
List<Element>
The s resulting from the maximum, wrapped in a list due to inheritance.
Maximum(Point, Point)
Computes the maximum of two Points that are defined at the same time.
public static Point Maximum(Point a, Point b)
Parameters
a
Point
b
Point
Returns
Point
The point resulting from the maximum.
Exceptions
ArgumentException
Thrown if the two points do not overlap.
Maximum(Point)
Computes the maximum of two Points that are defined at the same time.
public Point Maximum(Point b)
Parameters
b
Point
Returns
Point
The point resulting from the maximum.
Exceptions
ArgumentException
Thrown if the two points do not overlap.
Maximum(Point, Segment)
Computes the maximum of a Point to an overlapping Segment.
public static Point Maximum(Point point, Segment segment)
Parameters
point
Point
segment
Segment
Returns
Point
The point resulting from the maximum.
Exceptions
ArgumentException
Thrown if point and segment do not overlap.
Maximum(Segment)
Computes the maximum of a Point to an overlapping Segment.
public Point Maximum(Segment segment)
Parameters
segment
Segment
Returns
Point
The point resulting from the maximum.
Exceptions
ArgumentException
Thrown if point and segment do not overlap.
Maximum(IReadOnlyList<Point>)
Computes the maximum of a set of points.
public static Point Maximum(IReadOnlyList<Point> points)
Parameters
points
IReadOnlyList<Point>
Points of which the maximum has to be computed.
Returns
Point
The point resulting from the overall maximum.
Exceptions
ArgumentException
Thrown if the points do not overlap.
InvalidOperationException
Thrown if the set of points is empty.
Convolution(Element, Nullable<Rational>, Nullable<Rational>)
Computes the convolution between the Point and the given Element.
public IEnumerable<Element> Convolution(Element element, Nullable<Rational> cutEnd, Nullable<Rational> cutCeiling)
Parameters
element
Element
cutEnd
Nullable<Rational>
cutCeiling
Nullable<Rational>
Returns
IEnumerable<Element>
The s resulting from the convolution, wrapped in a list due to inheritance.
Convolution(Point, Point)
Computes the convolution between two Points.
Defined in [BT08] Section 3.2.1, Lemma 2
public static Point Convolution(Point a, Point b)
Parameters
a
Point
b
Point
Returns
Point
The resulting from the convolution.
Convolution(Point)
Computes the convolution between two Points.
Defined in [BT08] Section 3.2.1, Lemma 2
public Point Convolution(Point point)
Parameters
point
Point
Returns
Point
The resulting from the convolution.
Convolution(Point, Segment)
Computes the convolution between a Point and a Segment.
Defined in [BT08] Section 3.2.1, Lemma 3
public static Segment Convolution(Point point, Segment segment)
Parameters
point
Point
segment
Segment
Returns
Segment
The resulting from the convolution.
Convolution(Segment)
Computes the convolution between the Point and a Segment.
Defined in [BT08] Section 3.2.1, Lemma 3
public Segment Convolution(Segment segment)
Parameters
segment
Segment
Returns
Segment
The resulting from the convolution.
Deconvolution(Element)
Computes the deconvolution between the Point and the given Element.
public IEnumerable<Element> Deconvolution(Element element)
Parameters
element
Element
Returns
IEnumerable<Element>
The s resulting from the deconvolution, wrapped in a list due to inheritance.
Deconvolution(Point, Point)
Computes the deconvolution between two Points.
Defined in [BT08] Section 3.2.2, Lemma 5
public static Point Deconvolution(Point a, Point b)
Parameters
a
Point
b
Point
Returns
Point
The resulting from the deconvolution.
Deconvolution(Point)
Computes the deconvolution between two Points.
Defined in [BT08] Section 3.2.2, Lemma 5
public Point Deconvolution(Point point)
Parameters
point
Point
Returns
Point
The resulting from the deconvolution.
Deconvolution(Point, Segment)
Computes the deconvolution between a Point and a Segment.
Defined in [BT08] Section 3.2.2, Lemma 7
public static Segment Deconvolution(Point point, Segment segment)
Parameters
point
Point
segment
Segment
Returns
Segment
The resulting from the deconvolution.
Deconvolution(Segment)
Computes the deconvolution between the Point and a Segment.
Defined in [BT08] Section 3.2.2, Lemma 7
public Segment Deconvolution(Segment segment)
Parameters
segment
Segment
Returns
Segment
The resulting from the deconvolution.
MaxPlusConvolution(Element, Nullable<Rational>)
Computes the max-plus convolution between the Point and the given Element.
public IEnumerable<Element> MaxPlusConvolution(Element element, Nullable<Rational> cutEnd)
Parameters
element
Element
cutEnd
Nullable<Rational>
Returns
IEnumerable<Element>
The s resulting from the max-plus convolution, wrapped in a list due to inheritance.
MaxPlusConvolution(Point, Point)
Computes the max-plus convolution between two Points.
Adapted from the min-plus convolution algorithm described in [BT08] Section 3.2.1, Lemma 2
public static Point MaxPlusConvolution(Point a, Point b)
Parameters
a
Point
b
Point
Returns
Point
The resulting from the max-plus convolution.
MaxPlusConvolution(Point)
Computes the max-plus convolution between two Points.
Adapted from the min-plus convolution algorithm described in [BT08] Section 3.2.1, Lemma 2
public Point MaxPlusConvolution(Point point)
Parameters
point
Point
Returns
Point
The resulting from the max-plus convolution.
MaxPlusConvolution(Point, Segment)
Computes the max-plus convolution between a Point and a Segment.
Adapted from the min-plus convolution algorithm described in [BT08] Section 3.2.1, Lemma 3
public static Segment MaxPlusConvolution(Point point, Segment segment)
Parameters
point
Point
segment
Segment
Returns
Segment
The resulting from the max-plus convolution.
MaxPlusConvolution(Segment)
Computes the max-plus convolution between the Point and a Segment.
Adapted from the min-plus convolution algorithm described in [BT08] Section 3.2.1, Lemma 3
public Segment MaxPlusConvolution(Segment segment)
Parameters
segment
Segment
Returns
Segment
The resulting from the max-plus convolution.
SubAdditiveClosure(ComputationSettings)
Computes the sub-additive closure of the point.
Described in [BT07] Section 4.6 as algorithm 8.
public SubAdditiveCurve SubAdditiveClosure(ComputationSettings settings)
Parameters
settings
ComputationSettings
Returns
SubAdditiveCurve
The result of the sub-additive closure.
SubAdditiveClosure(Rational, Rational, ComputationSettings)
Computes the sub-additive closure of the pseudo-periodic point.
Described in [BT07] Section 4.6 as algorithm 9
public SubAdditiveCurve SubAdditiveClosure(Rational pseudoPeriodLength, Rational pseudoPeriodHeight, ComputationSettings settings)
Parameters
pseudoPeriodLength
Rational
Lenght of the pseudo-period
pseudoPeriodHeight
Rational
Step gained after each pseudo-period
settings
ComputationSettings
Returns
SubAdditiveCurve
The result of the sub-additive closure
Exceptions
ArgumentException
Thrown if the period is not greater than 0