21 public bool IsZero => Start == 0 && End == 0;
22 public bool IsEmpty => End - Start <= 0;
25 if (end >= start) (Start, End) = (start, end);
26 else (End, Start) = (start, end);
28 public static bool operator ==(
IntRange a,
IntRange b) => a.Start == b.Start && a.End == b.End;
29 public static bool operator !=(
IntRange a,
IntRange b) => a.Start != b.Start || a.End != b.End;
31 public override string ToString() => $
"[{Start},{End}]";
32 public static IntRange Parse(
string raw)
34 if (raw ==
null || raw ==
"")
return new IntRange(0, 0);
36 string content = raw.Split(
'[',
']')[1];
38 List<string> coords = content.Split(
',').Select(s => s.Trim()).ToList();
43 int.TryParse(coords.ElementAtOrDefault(0), out start);
44 int.TryParse(coords.ElementAtOrDefault(1), out end);
58 public bool IsZero => Start == 0 && End == 0;
59 public bool IsEmpty => End - Start <= 0;
61 public float PosOf(
float lambda) => (End - Start) * lambda;
62 public float LambdaOf(
float pos) => (pos - Start) / (End - Start);
65 if (end >= start) (Start, End) = (start, end);
66 else (End, Start) = (start, end);
68 public static bool operator ==(
FloatRange a,
FloatRange b) => a.Start == b.Start && a.End == b.End;
69 public static bool operator !=(
FloatRange a,
FloatRange b) => a.Start != b.Start || a.End != b.End;
71 public override string ToString() => $
"[{Start},{End}]";
75 if (raw ==
null || raw ==
"")
return new FloatRange(0, 0);
77 string content = raw.Split(
'[',
']')[1];
79 List<string> coords = content.Split(
',').Select(s => s.Trim()).ToList();
84 float.TryParse(coords.ElementAtOrDefault(0), out start);
85 float.TryParse(coords.ElementAtOrDefault(1), out end);