int segments = 30;
int degrees = 360;
int deg_per_line = degrees / segments;
var segmentation = 3;
double segmentDegrees = degrees / segmentation;
List<int> segmentList = new();
Console.WriteLine($"\n\n\n");
for (int i = 0; i < segmentation; i++)
{
var val = i / (double)segmentation;
segmentList.Add((int)Math.Ceiling(val * degrees));
}
// Loop until x is zero
for (int i = segments; i > 0; i -= segmentation)
{
for (int e = 0; e < segmentation; e++)
Console.Write(segmentList[e] + " ");
// Calculate the remaining lines and the next slice
int remaining_lines = i - segmentation;
int next_slice = (int)Math.Ceiling((double)remaining_lines / segmentation / 2.0);
if (remaining_lines % 2 == 0)
next_slice -= 1;
//The following code is not correct maybe, its kind of a hack I got by trying random things
else if (next_slice % 2 == 0)
next_slice = next_slice * 2 - 1;
// Accumulate the degrees for each slice
for (int j = 0; j < segmentation; j++)
{
segmentList[j] = (int)(deg_per_line * next_slice + j * segmentDegrees);
}
Console.WriteLine();
if (remaining_lines <= 0)
return;
}
int segments = 30;
int degrees = 360;
int deg_per_line = degrees / segments;
var segmentation = 3;
double segmentDegrees = degrees / segmentation;
List<int> segmentList = new();
Console.WriteLine($"\n\n\n");
for (int i = 0; i < segmentation; i++)
{
var val = i / (double)segmentation;
segmentList.Add((int)Math.Ceiling(val * degrees));
}
// Loop until x is zero
for (int i = segments; i > 0; i -= segmentation)
{
for (int e = 0; e < segmentation; e++)
Console.Write(segmentList[e] + " ");
// Calculate the remaining lines and the next slice
int remaining_lines = i - segmentation;
int next_slice = (int)Math.Ceiling((double)remaining_lines / segmentation / 2.0);
if (remaining_lines % 2 == 0)
next_slice -= 1;
//The following code is not correct maybe, its kind of a hack I got by trying random things
else if (next_slice % 2 == 0)
next_slice = next_slice * 2 - 1;
// Accumulate the degrees for each slice
for (int j = 0; j < segmentation; j++)
{
segmentList[j] = (int)(deg_per_line * next_slice + j * segmentDegrees);
}
Console.WriteLine();
if (remaining_lines <= 0)
return;
}