0

想要从用户那里获得 3 Point3D,并且他/她可以确定这些点是如何

连接。

我想在 MeshGeometry3Dandmesh.Positions.Add和 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 的用户输入是:2,3,4(例如),因为 point1 的 x,y,z 和 Point3D p1 = Point3D.Parse(textbox1.Text) 正确解析为 point3d。所以下一步很重要。路径的用户输入是:1,2,3(例如)=> 这意味着:首先将点 1 连接到点 2,然后将点 2 连接到点 3。

4

1 回答 1

0

如果您让用户能够创建 8 Point3Ds,那么您显然需要 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

ETC...

这绝对可以改进,并且只能用于获得理解。

于 2013-08-30T18:51:39.267 回答