Added Algorithm Selection
This commit is contained in:
@@ -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,57 +55,72 @@
|
|||||||
<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>
|
||||||
<Grid RowDefinitions="*, auto">
|
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
|
||||||
<StackPanel Orientation="Vertical">
|
<Grid RowDefinitions="*, auto">
|
||||||
<Border Classes="InnerCard">
|
<StackPanel Orientation="Vertical">
|
||||||
<TextBlock Text="Delaunay Triangulation" FontSize="18" Foreground="White"/>
|
<Border Classes="InnerCard">
|
||||||
</Border>
|
<TextBlock Text="Delaunay Triangulation" FontSize="18" Foreground="White"/>
|
||||||
<Border Classes="InnerCard">
|
</Border>
|
||||||
<StackPanel Orientation="Vertical">
|
<Border Classes="InnerCard">
|
||||||
<TextBlock Text="Maximal Point Count" Foreground="White"/>
|
<StackPanel Orientation="Vertical">
|
||||||
<Grid ColumnDefinitions="4*,1*">
|
<TextBlock Text="Maximal Point Count" Foreground="White"/>
|
||||||
<Slider Grid.Column="0" Value="{Binding PointCount, Mode=TwoWay}" Margin="5" Minimum="20" Maximum="200"/>
|
<Grid ColumnDefinitions="4*,1*">
|
||||||
<NumericUpDown Height="20" Grid.Column="1" ShowButtonSpinner="False" Value="{Binding PointCount, Mode=TwoWay}" Minimum="1" Increment="1" FormatString="F0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
|
<Slider Grid.Column="0" Value="{Binding PointCount, Mode=TwoWay}" Margin="5" Minimum="20" Maximum="200"/>
|
||||||
</Grid>
|
<NumericUpDown Height="20" Grid.Column="1" ShowButtonSpinner="False" Value="{Binding PointCount, Mode=TwoWay}" Minimum="1" Increment="1" FormatString="F0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
|
||||||
</StackPanel>
|
</Grid>
|
||||||
</Border>
|
</StackPanel>
|
||||||
<Border Classes="InnerCard">
|
</Border>
|
||||||
<StackPanel Orientation="Vertical">
|
<Border Classes="InnerCard">
|
||||||
<TextBlock Text="Minimal Point Distance" Foreground="White"/>
|
<StackPanel Orientation="Vertical">
|
||||||
<Grid ColumnDefinitions="4*,1*">
|
<TextBlock Text="Minimal Point Distance" Foreground="White"/>
|
||||||
<Slider Grid.Column="0" Value="{Binding MinPointDistance, Mode=TwoWay}" Margin="5" Minimum="1" Maximum="10"/>
|
<Grid ColumnDefinitions="4*,1*">
|
||||||
<NumericUpDown Height="20" Grid.Column="1" ShowButtonSpinner="False" Value="{Binding MinPointDistance, Mode=TwoWay}" Minimum="1" Increment="1" FormatString="F0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/> </Grid>
|
<Slider Grid.Column="0" Value="{Binding MinPointDistance, Mode=TwoWay}" Margin="5" Minimum="1" Maximum="10"/>
|
||||||
</StackPanel>
|
<NumericUpDown Height="20" Grid.Column="1" ShowButtonSpinner="False" Value="{Binding MinPointDistance, Mode=TwoWay}" Minimum="1" Increment="1" FormatString="F0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/> </Grid>
|
||||||
</Border>
|
</StackPanel>
|
||||||
<Border Classes="InnerCard">
|
</Border>
|
||||||
<StackPanel Orientation="Vertical">
|
<Border Classes="InnerCard">
|
||||||
<TextBlock Text="Genearation Speed" Foreground="White"/>
|
<StackPanel Orientation="Vertical">
|
||||||
<Grid ColumnDefinitions="4*,1*">
|
<TextBlock Text="Genearation Speed" Foreground="White"/>
|
||||||
<Slider Grid.Column="0" Value="{Binding GenerationDelay, Mode=TwoWay}" Margin="5" Minimum="0" Maximum="1000"/>
|
<Grid ColumnDefinitions="4*,1*">
|
||||||
<NumericUpDown Height="20" Grid.Column="1" ShowButtonSpinner="False" Value="{Binding GenerationDelay, Mode=TwoWay}" Minimum="0" Increment="1" FormatString="F0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
|
<Slider Grid.Column="0" Value="{Binding GenerationDelay, Mode=TwoWay}" Margin="5" Minimum="0" Maximum="1000"/>
|
||||||
</Grid>
|
<NumericUpDown Height="20" Grid.Column="1" ShowButtonSpinner="False" Value="{Binding GenerationDelay, Mode=TwoWay}" Minimum="0" Increment="1" FormatString="F0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
|
||||||
</StackPanel>
|
</Grid>
|
||||||
</Border>
|
</StackPanel>
|
||||||
<Border Classes="InnerCard">
|
</Border>
|
||||||
<StackPanel Orientation="Vertical">
|
<Border Classes="InnerCard">
|
||||||
<TextBlock Text="Enabled Visuals:" Foreground="White"/>
|
<StackPanel Orientation="Vertical">
|
||||||
<Grid ColumnDefinitions="1*, 1*">
|
<TextBlock Text="Enabled Visuals:" Foreground="White"/>
|
||||||
<CheckBox HorizontalAlignment="Left" Content="Points" IsChecked="{Binding PointsVisible}" Foreground="White" Margin="10,0"/>
|
<Grid ColumnDefinitions="1*, 1*">
|
||||||
<CheckBox Grid.Column="1" HorizontalAlignment="Left" Content="Convex Hull" IsChecked="{Binding EdgesVisible}" Foreground="White" Margin="10,0"/>
|
<CheckBox HorizontalAlignment="Left" Content="Points" IsChecked="{Binding PointsVisible}" Foreground="White" Margin="10,0"/>
|
||||||
</Grid>
|
<CheckBox Grid.Column="1" HorizontalAlignment="Left" Content="Convex Hull" IsChecked="{Binding EdgesVisible}" Foreground="White" Margin="10,0"/>
|
||||||
<Grid ColumnDefinitions="1*, 1*">
|
</Grid>
|
||||||
<CheckBox HorizontalAlignment="Left" Content="Circles" IsChecked="{Binding CirclesVisible}" Foreground="White" Margin="10,0"/>
|
<Grid ColumnDefinitions="1*, 1*">
|
||||||
<CheckBox Grid.Column="1" HorizontalAlignment="Left" Content="Triangles" IsChecked="{Binding TrianglesVisible}" Foreground="White" Margin="10,0"/>
|
<CheckBox HorizontalAlignment="Left" Content="Circles" IsChecked="{Binding CirclesVisible}" Foreground="White" Margin="10,0"/>
|
||||||
</Grid>
|
<CheckBox Grid.Column="1" HorizontalAlignment="Left" Content="Triangles" IsChecked="{Binding TrianglesVisible}" Foreground="White" Margin="10,0"/>
|
||||||
<Grid ColumnDefinitions="1*, 1*">
|
</Grid>
|
||||||
<CheckBox HorizontalAlignment="Left" Content="Voronoi" IsChecked="{Binding VoronoiVisible}" Foreground="White" Margin="10,0"/>
|
<Grid ColumnDefinitions="1*, 1*">
|
||||||
<!-- <CheckBox Content="Triangles" IsChecked="{Binding TrianglesVisible}" Foreground="White" Margin="10,0"/> -->
|
<CheckBox HorizontalAlignment="Left" Content="Voronoi" IsChecked="{Binding VoronoiVisible}" Foreground="White" Margin="10,0"/>
|
||||||
</Grid>
|
<!-- <CheckBox Content="Triangles" IsChecked="{Binding TrianglesVisible}" Foreground="White" Margin="10,0"/> -->
|
||||||
</StackPanel>
|
</Grid>
|
||||||
</Border>
|
</StackPanel>
|
||||||
</StackPanel>
|
</Border>
|
||||||
<Button Grid.Row="1" Foreground="White" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="Generate" Command="{Binding GenerateCommand}"/>
|
<Border Classes="InnerCard">
|
||||||
</Grid>
|
<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>
|
||||||
|
<Button Grid.Row="1" Foreground="White" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="Generate" Command="{Binding GenerateCommand}"/>
|
||||||
|
</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">
|
||||||
|
|||||||
Reference in New Issue
Block a user