从 for 循环绘制螺旋工具包

问题描述

我需要从后面的代码中(而不是从 xaml)中绘制大量三角形。 为了计算,我用 for 循环计算一半 Triangleindices,另一半用另一个计算。 这里的代码: xml:

<Window x:Name="MainWindowX" x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:HelixTest"
    xmlns:HelixToolkit="clr-namespace:HelixToolkit.Wpf;assembly=HelixToolkit.Wpf"
   
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800">
<Grid>
    <HelixToolkit:HelixViewport3D Name="myviewport" ZoomExtentsWhenLoaded="True"  Background="Black"  ShowCoordinateSystem="True" >
        <!-- Remember to add light to the scene -->
        <HelixToolkit:SunLight/>
        <ModelVisual3D>
            <ModelVisual3D.Content>
                <GeometryModel3D x:Name="myGeometryModel3D">
                    
                    <GeometryModel3D.Geometry>
                        <MeshGeometry3D x:Name="myMeshGeometry3D">


                        </MeshGeometry3D>
                    </GeometryModel3D.Geometry >
                    <GeometryModel3D.Material>
                        <MaterialGroup>
                            <DiffuseMaterial>
                                <DiffuseMaterial.Brush>
                                    
                                        <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
                                            <LinearGradientBrush.GradientStops>
                                                <GradientStop Color="red" Offset="2" />
                                                <GradientStop Color="Red" Offset="3" />
                                                <GradientStop Color="Blue" Offset="4" />
                                                <GradientStop Color="LimeGreen" Offset="5" />
                                            </LinearGradientBrush.GradientStops>
                                    </LinearGradientBrush>
                                </DiffuseMaterial.Brush>
                            </DiffuseMaterial>
                        </MaterialGroup>
                    </GeometryModel3D.Material>
                </GeometryModel3D>
            </ModelVisual3D.Content>
        </ModelVisual3D>

       
     
        <HelixToolkit:BillboardTextVisual3D Position="11 0 0" Text="X" Foreground="Yellow"/>
        <HelixToolkit:BillboardTextVisual3D Position="0 11 0" Text="Y" Foreground="Yellow" />
        <HelixToolkit:BillboardTextVisual3D Position="0 0 11" Text="Z"  Foreground="Yellow"/>
    </HelixToolkit:HelixViewport3D>

</Grid>

和后面的 vb.net 代码

Imports System.Windows.Media.Media3D
Imports HelixToolkit

Class MainWindow
    Dim punti = 5
    Dim curve = 5
    Dim valori As New List(Of Integer)
    Dim indices As New List(Of Integer)
    Dim triangoli = (punti - 1) * (curve - 1) * 2

    Private Sub MainWindowX_Loaded(sender As Object,e As RoutedEventArgs) Handles MyBase.Loaded,MyBase.Loaded

        myMeshGeometry3D.Positions.Clear()
        myMeshGeometry3D.TriangleIndices.Clear()

        valori.Add(0)
        valori.Add(1)
        valori.Add(2)
        valori.Add(3)
        valori.Add(3)
        valori.Add(0)
        valori.Add(1)
        valori.Add(2)
        valori.Add(3)
        valori.Add(3)
        valori.Add(0)
        valori.Add(1)
        valori.Add(2)
        valori.Add(3)
        valori.Add(3)
        valori.Add(0)
        valori.Add(1)
        valori.Add(2)
        valori.Add(3)
        valori.Add(3)
        valori.Add(0)
        valori.Add(1)
        valori.Add(2)
        valori.Add(3)
        valori.Add(3)



        'load myMeshGeometry3d.Positions
        For I = 0 To curve - 1
            'per ogni curva
            For b = 0 To punti - 1
                myMeshGeometry3D.Positions.Add(New Point3D(b,I,valori(I * punti + b)))

            Next


        Next

        'First half
        For d = punti + 1 To triangoli - 2 Step punti
            For f = 0 To punti - 2 Step 1
                myMeshGeometry3D.TriangleIndices.Add(d + f)
                myMeshGeometry3D.TriangleIndices.Add((d - 1) + f)
                myMeshGeometry3D.TriangleIndices.Add((d - punti) + f)
            Next
        Next
        'second half
        For j = 0 To triangoli Step punti
            For i = 0 To punti - 2 Step 1
                myMeshGeometry3D.TriangleIndices.Add(j + i)
                myMeshGeometry3D.TriangleIndices.Add((j + 1) + i)
                myMeshGeometry3D.TriangleIndices.Add((j + punti) + i)
            Next
        Next
    End Sub
End Class

我的用处是只显示从第一个循环生成的三角形,第二个不显示。 我试图交换循环,它们都是正确的。 我还尝试添加 2 个按钮,一个用于循环。他们努力显示半三角形,但只有首先我清除三角形索引。 有什么建议吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...