0

ユーザーから 3 つの Point3D を取得したいと考えており、これらのポイントがどのようになっているかを判断することもできます。

接続。

MeshGeometry3Dこれをand mesh.Positions.Addand andで使いたい mesh.TriangleIndices.Add

XAML で:

         <TextBlock Grid.Row="0" Grid.Column="0"    Width="Auto"   Text="Point 1" Margin="2"></TextBlock>
     <TextBox Grid.Row="0" Grid.Column="1"    Text="0,0,0"   Width="50" Margin="2"  Name="textbox1"></TextBox>
      <TextBlock Grid.Row="1" Grid.Column="0"      Text="Point 2" Margin="2"></TextBlock>
       <TextBox Grid.Row="1" Grid.Column="1"   Text="0,0,0"   Width="50" Margin="2"   Name="textbox2"></TextBox>
       <TextBlock Grid.Row="2" Grid.Column="0"  Width="Auto"  Text="Point 3" Margin="2"></TextBlock>
       <TextBox Grid.Row="2" Grid.Column="1"    Text="0,0,0"   Width="50" Margin="2"  Name="textbox3"></TextBox>

      <TextBlock Grid.Row="3" Grid.Column="0"  Width="Auto"   Text="Path" Margin="2"></TextBlock>
                                <TextBox Grid.Row="3" Grid.Column="1"    Text="1,3,2" Width="50" Margin="2"   Name="pathtxt"></TextBox>

コードビハインド:

        Point3D p1 = Point3D.Parse(textbox1.Text);
        Point3D p2 = Point3D.Parse(textbox2.Text);
        Point3D p3 = Point3D.Parse(textbox3.Text);

        string[] path = pathtxt.Text.Split(',');

       MeshGeometry3D mesh = new MeshGeometry3D();

       //mesh.Positions.Add(????);  ???

たとえば、自分でパスを決定するのは簡単です:

        mesh.Positions.Add(p1);
        mesh.Positions.Add(p2);
        mesh.Positions.Add(p3);
        mesh.TriangleIndices.Add(0);
        mesh.TriangleIndices.Add(1);
        mesh.TriangleIndices.Add(2);

しかし、どうすればユーザーパスから作成できますか?

1,3,2 を p1,p3,p2 に変換する方法は?

何か案が ?

助けてくれてありがとう。

もっと説明してください:

ポイント1のユーザー入力は次のとおりです。ポイント1およびPoint3Dのx、y、zとしての2,3,4 p1 = Point3D.Parse(textbox1.Text)は、point3dへの正しい解析です。次のステップが重要です。パスのユーザー入力は : 1,2,3 (例) => つまり、最初にポイント 1 をポイント 2 に接続し、次にポイント 2 をポイント 3 に接続します。

4

1 に答える 1

0

ユーザーに 8 個Point3Dの s を作成できるようにすると、明らかに 8 個のテキスト ボックスが必要になります。

これは、8mesh.Position.Add(..)秒実行する必要があることを意味します。

TriangleIndices次に、 ;を定義する必要があります。つまり、ユーザーにパスを定義するように依頼します。したがって、次のようにします。

<TextBlock Grid.Row="4" Grid.Column="0"    Width="Auto"   Text="Enter the path of your polygon keeping in mind the order you added your points" Margin="2"></TextBlock>
<TextBlock Grid.Row="4" Grid.Column="1"    Width="Auto"   Name="indices" Margin="2"></TextBlock>

ユーザーにテキストボックスに次"0,2,1,3,5,8,6,7,4"のように入力してindicesもらいます。

行う:

string[] idx = indicies.Text.Split(',');
for(int i = 0; i < idx.Length; i++)
{
    mesh.TriangleIndices.Add(mesh.Positions[idx[i]]);
}

この場合、次のように接続します。

  • p1p3
  • p3p2
  • p2p4
  • //Assuming you had more points
  • p4p6
  • p6p8

等...

これは確実に改善できるので、理解を深めるためにのみ使用してください。

于 2013-08-30T18:51:39.267 に答える