diff --git a/Triangle.NET/TestApp/FormTopology.cs b/Triangle.NET/TestApp/FormTopology.cs index a933842..ce71b0f 100644 --- a/Triangle.NET/TestApp/FormTopology.cs +++ b/Triangle.NET/TestApp/FormTopology.cs @@ -22,7 +22,7 @@ namespace MeshExplorer private void FormTopology_Load(object sender, EventArgs e) { var mesher = new GenericMesher(); - mesh = (Mesh)mesher.StructurdMesh(new Rectangle(0.0, 0.0, 4.0, 4.0), 4, 4); + mesh = (Mesh)mesher.StructuredMesh(new Rectangle(0.0, 0.0, 4.0, 4.0), 4, 4); renderControl.Initialize(mesh); diff --git a/Triangle.NET/TestApp/Topology/TopologyControlView.Designer.cs b/Triangle.NET/TestApp/Topology/TopologyControlView.Designer.cs index 69e23f3..bdb22e1 100644 --- a/Triangle.NET/TestApp/Topology/TopologyControlView.Designer.cs +++ b/Triangle.NET/TestApp/Topology/TopologyControlView.Designer.cs @@ -60,7 +60,7 @@ this.lbS2.Location = new System.Drawing.Point(137, 122); this.lbS2.Name = "lbS2"; this.lbS2.Size = new System.Drawing.Size(53, 13); - this.lbS2.TabIndex = 16; + this.lbS2.TabIndex = 1; this.lbS2.Text = "-"; this.lbS2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // @@ -69,7 +69,7 @@ this.lbS1.Location = new System.Drawing.Point(137, 107); this.lbS1.Name = "lbS1"; this.lbS1.Size = new System.Drawing.Size(53, 13); - this.lbS1.TabIndex = 15; + this.lbS1.TabIndex = 1; this.lbS1.Text = "-"; this.lbS1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // @@ -78,7 +78,7 @@ this.lbS0.Location = new System.Drawing.Point(137, 92); this.lbS0.Name = "lbS0"; this.lbS0.Size = new System.Drawing.Size(53, 13); - this.lbS0.TabIndex = 17; + this.lbS0.TabIndex = 1; this.lbS0.Text = "-"; this.lbS0.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // @@ -88,7 +88,7 @@ this.label6.Location = new System.Drawing.Point(134, 71); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(57, 13); - this.label6.TabIndex = 19; + this.label6.TabIndex = 1; this.label6.Text = "Segments"; // // lbN2 @@ -96,7 +96,7 @@ this.lbN2.Location = new System.Drawing.Point(66, 122); this.lbN2.Name = "lbN2"; this.lbN2.Size = new System.Drawing.Size(57, 13); - this.lbN2.TabIndex = 13; + this.lbN2.TabIndex = 1; this.lbN2.Text = "-"; this.lbN2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // @@ -105,7 +105,7 @@ this.lbN1.Location = new System.Drawing.Point(66, 107); this.lbN1.Name = "lbN1"; this.lbN1.Size = new System.Drawing.Size(57, 13); - this.lbN1.TabIndex = 14; + this.lbN1.TabIndex = 1; this.lbN1.Text = "-"; this.lbN1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // @@ -114,7 +114,7 @@ this.lbN0.Location = new System.Drawing.Point(66, 92); this.lbN0.Name = "lbN0"; this.lbN0.Size = new System.Drawing.Size(57, 13); - this.lbN0.TabIndex = 12; + this.lbN0.TabIndex = 1; this.lbN0.Text = "-"; this.lbN0.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // @@ -124,7 +124,7 @@ this.label5.Location = new System.Drawing.Point(63, 71); this.label5.Name = "label5"; this.label5.Size = new System.Drawing.Size(61, 13); - this.label5.TabIndex = 10; + this.label5.TabIndex = 1; this.label5.Text = "Neighbors"; // // lbPosition @@ -133,7 +133,7 @@ this.lbPosition.Location = new System.Drawing.Point(70, 15); this.lbPosition.Name = "lbPosition"; this.lbPosition.Size = new System.Drawing.Size(11, 13); - this.lbPosition.TabIndex = 11; + this.lbPosition.TabIndex = 1; this.lbPosition.Text = "-"; // // lbV2 @@ -141,7 +141,7 @@ this.lbV2.Location = new System.Drawing.Point(16, 122); this.lbV2.Name = "lbV2"; this.lbV2.Size = new System.Drawing.Size(38, 13); - this.lbV2.TabIndex = 6; + this.lbV2.TabIndex = 1; this.lbV2.Text = "-"; this.lbV2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // @@ -150,7 +150,7 @@ this.lbV1.Location = new System.Drawing.Point(16, 107); this.lbV1.Name = "lbV1"; this.lbV1.Size = new System.Drawing.Size(38, 13); - this.lbV1.TabIndex = 5; + this.lbV1.TabIndex = 1; this.lbV1.Text = "-"; this.lbV1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // @@ -159,7 +159,7 @@ this.lbV0.Location = new System.Drawing.Point(16, 92); this.lbV0.Name = "lbV0"; this.lbV0.Size = new System.Drawing.Size(38, 13); - this.lbV0.TabIndex = 7; + this.lbV0.TabIndex = 1; this.lbV0.Text = "-"; this.lbV0.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // @@ -169,7 +169,7 @@ this.label4.Location = new System.Drawing.Point(8, 71); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(47, 13); - this.label4.TabIndex = 9; + this.label4.TabIndex = 1; this.label4.Text = "Vertices"; // // label1 @@ -178,7 +178,7 @@ this.label1.Location = new System.Drawing.Point(6, 15); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(52, 13); - this.label1.TabIndex = 8; + this.label1.TabIndex = 1; this.label1.Text = "Position:"; // // label2 @@ -187,7 +187,7 @@ this.label2.Location = new System.Drawing.Point(7, 37); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(51, 13); - this.label2.TabIndex = 8; + this.label2.TabIndex = 1; this.label2.Text = "Triangle:"; // // lbTriangle @@ -196,7 +196,7 @@ this.lbTriangle.Location = new System.Drawing.Point(70, 37); this.lbTriangle.Name = "lbTriangle"; this.lbTriangle.Size = new System.Drawing.Size(11, 13); - this.lbTriangle.TabIndex = 11; + this.lbTriangle.TabIndex = 1; this.lbTriangle.Text = "-"; // // darkButton9 @@ -204,7 +204,7 @@ this.darkButton9.Location = new System.Drawing.Point(99, 367); this.darkButton9.Name = "darkButton9"; this.darkButton9.Size = new System.Drawing.Size(78, 23); - this.darkButton9.TabIndex = 21; + this.darkButton9.TabIndex = 10; this.darkButton9.Text = "Rprev"; this.darkButton9.UseVisualStyleBackColor = true; this.darkButton9.Click += new System.EventHandler(this.btnPrimitive_Click); @@ -214,7 +214,7 @@ this.darkButton7.Location = new System.Drawing.Point(99, 338); this.darkButton7.Name = "darkButton7"; this.darkButton7.Size = new System.Drawing.Size(78, 23); - this.darkButton7.TabIndex = 22; + this.darkButton7.TabIndex = 8; this.darkButton7.Text = "Dprev"; this.darkButton7.UseVisualStyleBackColor = true; this.darkButton7.Click += new System.EventHandler(this.btnPrimitive_Click); @@ -224,7 +224,7 @@ this.darkButton5.Location = new System.Drawing.Point(99, 309); this.darkButton5.Name = "darkButton5"; this.darkButton5.Size = new System.Drawing.Size(78, 23); - this.darkButton5.TabIndex = 23; + this.darkButton5.TabIndex = 6; this.darkButton5.Text = "Oprev"; this.darkButton5.UseVisualStyleBackColor = true; this.darkButton5.Click += new System.EventHandler(this.btnPrimitive_Click); @@ -234,7 +234,7 @@ this.darkButton3.Location = new System.Drawing.Point(99, 280); this.darkButton3.Name = "darkButton3"; this.darkButton3.Size = new System.Drawing.Size(78, 23); - this.darkButton3.TabIndex = 24; + this.darkButton3.TabIndex = 4; this.darkButton3.Text = "Lprev"; this.darkButton3.UseVisualStyleBackColor = true; this.darkButton3.Click += new System.EventHandler(this.btnPrimitive_Click); @@ -244,7 +244,7 @@ this.darkButton8.Location = new System.Drawing.Point(11, 367); this.darkButton8.Name = "darkButton8"; this.darkButton8.Size = new System.Drawing.Size(78, 23); - this.darkButton8.TabIndex = 25; + this.darkButton8.TabIndex = 9; this.darkButton8.Text = "Rnext"; this.darkButton8.UseVisualStyleBackColor = true; this.darkButton8.Click += new System.EventHandler(this.btnPrimitive_Click); @@ -254,7 +254,7 @@ this.darkButton6.Location = new System.Drawing.Point(11, 338); this.darkButton6.Name = "darkButton6"; this.darkButton6.Size = new System.Drawing.Size(78, 23); - this.darkButton6.TabIndex = 26; + this.darkButton6.TabIndex = 7; this.darkButton6.Text = "Dnext"; this.darkButton6.UseVisualStyleBackColor = true; this.darkButton6.Click += new System.EventHandler(this.btnPrimitive_Click); @@ -264,7 +264,7 @@ this.darkButton4.Location = new System.Drawing.Point(11, 309); this.darkButton4.Name = "darkButton4"; this.darkButton4.Size = new System.Drawing.Size(78, 23); - this.darkButton4.TabIndex = 27; + this.darkButton4.TabIndex = 5; this.darkButton4.Text = "Onext"; this.darkButton4.UseVisualStyleBackColor = true; this.darkButton4.Click += new System.EventHandler(this.btnPrimitive_Click); @@ -274,7 +274,7 @@ this.darkButton2.Location = new System.Drawing.Point(11, 280); this.darkButton2.Name = "darkButton2"; this.darkButton2.Size = new System.Drawing.Size(78, 23); - this.darkButton2.TabIndex = 28; + this.darkButton2.TabIndex = 3; this.darkButton2.Text = "Lnext"; this.darkButton2.UseVisualStyleBackColor = true; this.darkButton2.Click += new System.EventHandler(this.btnPrimitive_Click); @@ -284,12 +284,12 @@ this.darkButton1.Location = new System.Drawing.Point(11, 251); this.darkButton1.Name = "darkButton1"; this.darkButton1.Size = new System.Drawing.Size(166, 23); - this.darkButton1.TabIndex = 20; + this.darkButton1.TabIndex = 2; this.darkButton1.Text = "Sym"; this.darkButton1.UseVisualStyleBackColor = true; this.darkButton1.Click += new System.EventHandler(this.btnPrimitive_Click); // - // TopoControlView + // TopologyControlView // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; @@ -321,7 +321,7 @@ this.Controls.Add(this.label1); this.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.ForeColor = System.Drawing.Color.White; - this.Name = "TopoControlView"; + this.Name = "TopologyControlView"; this.Size = new System.Drawing.Size(195, 439); this.ResumeLayout(false); this.PerformLayout(); diff --git a/Triangle.NET/Triangle/Meshing/GenericMesher.cs b/Triangle.NET/Triangle/Meshing/GenericMesher.cs index e041155..88dfaf4 100644 --- a/Triangle.NET/Triangle/Meshing/GenericMesher.cs +++ b/Triangle.NET/Triangle/Meshing/GenericMesher.cs @@ -1,6 +1,7 @@  namespace TriangleNet.Meshing { + using System; using System.Collections.Generic; using TriangleNet.Geometry; using TriangleNet.IO; @@ -86,9 +87,19 @@ namespace TriangleNet.Meshing /// Number of segments in x direction. /// Number of segments in y direction. /// Mesh - public IMesh StructurdMesh(double width, double height, int nx, int ny) + public IMesh StructuredMesh(double width, double height, int nx, int ny) { - return StructurdMesh(new Rectangle(0.0, 0.0, width, height), nx, ny); + if (width <= 0.0) + { + throw new ArgumentException("width"); + } + + if (height <= 0.0) + { + throw new ArgumentException("height"); + } + + return StructuredMesh(new Rectangle(0.0, 0.0, width, height), nx, ny); } /// @@ -98,7 +109,7 @@ namespace TriangleNet.Meshing /// Number of segments in x direction. /// Number of segments in y direction. /// Mesh - public IMesh StructurdMesh(Rectangle bounds, int nx, int ny) + public IMesh StructuredMesh(Rectangle bounds, int nx, int ny) { var polygon = new Polygon((nx + 1) * (ny + 1)); @@ -129,10 +140,10 @@ namespace TriangleNet.Meshing n = 0; - // Set vertex id and hash. + // Set vertex hash and id. foreach (var v in points) { - v.id = v.hash = n++; + v.hash = v.id = n++; } // Add boundary segments. @@ -170,8 +181,20 @@ namespace TriangleNet.Meshing k = j + (ny + 1) * i; l = j + (ny + 1) * (i + 1); - triangles[n++] = new InputTriangle(k, l, l + 1); - triangles[n++] = new InputTriangle(k, l + 1, k + 1); + // Create 2 triangles in rectangle [k, l, l + 1, k + 1]. + + if ((i + j) % 2 == 0) + { + // Diagonal from bottom left to top right. + triangles[n++] = new InputTriangle(k, l, l + 1); + triangles[n++] = new InputTriangle(k, l + 1, k + 1); + } + else + { + // Diagonal from top left to bottom right. + triangles[n++] = new InputTriangle(k, l, k + 1); + triangles[n++] = new InputTriangle(l, l + 1, k + 1); + } } }