Added Algorithm Selection

This commit is contained in:
Ano-sys
2026-01-03 15:13:33 +01:00
parent 55850a961b
commit a0d8ed79b7
2 changed files with 75 additions and 55 deletions
@@ -31,6 +31,11 @@ public partial class MainWindowViewModel : ViewModelBase
[ObservableProperty] private bool _voronoiVisible = true; [ObservableProperty] private bool _voronoiVisible = true;
[ObservableProperty] private bool _trianglesVisible = true; [ObservableProperty] private bool _trianglesVisible = true;
[ObservableProperty] private bool _doConnectPoints = false;
[ObservableProperty] private bool _doNearestTriangle = false;
[ObservableProperty] private bool _doDelaunayLib = false;
[ObservableProperty] private bool _doBowyerWatson = true;
[ObservableProperty] private int? _generationDelay = 20; [ObservableProperty] private int? _generationDelay = 20;
private CancellationTokenSource? _genCts; private CancellationTokenSource? _genCts;
@@ -541,10 +546,10 @@ public partial class MainWindowViewModel : ViewModelBase
VoronoiDiagram.Clear(); VoronoiDiagram.Clear();
await GenerateRandomPoints(PointCount ?? 20, ct); await GenerateRandomPoints(PointCount ?? 20, ct);
// await ConnectPoints(ct); if(DoConnectPoints) await ConnectPoints(ct);
// await Triangulate(ct); if(DoNearestTriangle) await Triangulate(ct);
// await DelaunayTriangulateAsync(ct); if(DoDelaunayLib) await DelaunayTriangulateAsync(ct);
await BowyerWatson(ct); if(DoBowyerWatson) await BowyerWatson(ct);
} }
private bool CanGenerate() => true; private bool CanGenerate() => true;
@@ -55,6 +55,7 @@
<Border.Effect> <Border.Effect>
<DropShadowEffect BlurRadius="20" Color="#aa000000" OffsetX="5" OffsetY="5"/> <DropShadowEffect BlurRadius="20" Color="#aa000000" OffsetX="5" OffsetY="5"/>
</Border.Effect> </Border.Effect>
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<Grid RowDefinitions="*, auto"> <Grid RowDefinitions="*, auto">
<StackPanel Orientation="Vertical"> <StackPanel Orientation="Vertical">
<Border Classes="InnerCard"> <Border Classes="InnerCard">
@@ -103,9 +104,23 @@
</Grid> </Grid>
</StackPanel> </StackPanel>
</Border> </Border>
<Border Classes="InnerCard">
<StackPanel Orientation="Vertical">
<TextBlock Text="Used Algorithm:" Foreground="White"/>
<Grid ColumnDefinitions="1*, 1*">
<RadioButton GroupName="Algorithm" HorizontalAlignment="Left" Content="Connect Points" IsChecked="{Binding DoConnectPoints}" Foreground="White" Margin="10,0"/>
<RadioButton Grid.Column="1" GroupName="Algorithm" HorizontalAlignment="Left" Content="Nearest Triangle" IsChecked="{Binding DoNearestTriangle}" Foreground="White" Margin="10,0"/>
</Grid>
<Grid ColumnDefinitions="1*, 1*">
<RadioButton GroupName="Algorithm" HorizontalAlignment="Left" Content="BowyerWatson" IsChecked="{Binding DoBowyerWatson}" Foreground="White" Margin="10,0"/>
<RadioButton Grid.Column="1" GroupName="Algorithm" HorizontalAlignment="Left" Content="Delaunay (Delaunator)" IsChecked="{Binding DoDelaunayLib}" Foreground="White" Margin="10,0"/>
</Grid>
</StackPanel>
</Border>
</StackPanel> </StackPanel>
<Button Grid.Row="1" Foreground="White" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="Generate" Command="{Binding GenerateCommand}"/> <Button Grid.Row="1" Foreground="White" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="Generate" Command="{Binding GenerateCommand}"/>
</Grid> </Grid>
</ScrollViewer>
</Border> </Border>
</Grid> </Grid>
<Canvas Grid.Row="0" Grid.RowSpan="2" x:Name="Scene" Background="#dd000000" ClipToBounds="True" PointerPressed="Scene_OnPointerPressed" PointerMoved="Scene_OnPointerMoved" PointerReleased="Scene_OnPointerReleased" PointerWheelChanged="Scene_OnWheel"> <Canvas Grid.Row="0" Grid.RowSpan="2" x:Name="Scene" Background="#dd000000" ClipToBounds="True" PointerPressed="Scene_OnPointerPressed" PointerMoved="Scene_OnPointerMoved" PointerReleased="Scene_OnPointerReleased" PointerWheelChanged="Scene_OnWheel">