本文整理汇总了C#中Contour.FindIndex方法的典型用法代码示例。如果您正苦于以下问题:C# Contour.FindIndex方法的具体用法?C# Contour.FindIndex怎么用?C# Contour.FindIndex使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Contour
的用法示例。
在下文中一共展示了Contour.FindIndex方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MakeSystem
//sets in matrix and vector the system, that must be solved by Cholesky
//matrix and vector must be created and initialized 0 before this executing this method.
public static void MakeSystem(ref List<Triangle> triangles, ref Contour contour, ref double[,] matrix, ref double[] vector)
{
double[,] K = new double[3, 3];
double[] F = new double[3];
double denominator_K; //4 * square of triangle
double koefficient_line_segment; //length of line segment, devided on something
int points_index_difference; //the difference of 2 points indexes: used to check are 2 point neighbors on the contour
int last_point_index_in_contour = 0;
foreach (Point point in contour)
if (point.Index > last_point_index_in_contour)
last_point_index_in_contour = point.Index;
foreach (Triangle triangle in triangles)
{
//-------------------make matrix K-------------------------------------------------------------
K[0, 0] = 0.0; K[0, 1] = 0.0; K[0, 2] = 0.0;
K[1, 0] = 0.0; K[1, 1] = 0.0; K[1, 2] = 0.0;
K[2, 0] = 0.0; K[2, 1] = 0.0; K[2, 2] = 0.0;
denominator_K = 4.0 * triangle.Square();
K[0, 0] = ((triangle.J.Y - triangle.K.Y) * (triangle.J.Y - triangle.K.Y) +
(triangle.K.X - triangle.J.X) * (triangle.K.X - triangle.J.X)) / denominator_K;
K[1, 1] = ((triangle.K.Y - triangle.I.Y) * (triangle.K.Y - triangle.I.Y) +
(triangle.I.X - triangle.K.X) * (triangle.I.X - triangle.K.X)) / denominator_K;
K[2, 2] = ((triangle.I.Y - triangle.J.Y) * (triangle.I.Y - triangle.J.Y) +
(triangle.J.X - triangle.I.X) * (triangle.J.X - triangle.I.X)) / denominator_K;
K[0, 1] = ((triangle.J.Y - triangle.K.Y) * (triangle.K.Y - triangle.I.Y) +
(triangle.K.X - triangle.J.X) * (triangle.I.X - triangle.K.X)) / denominator_K;
K[0, 2] = ((triangle.J.Y - triangle.K.Y) * (triangle.I.Y - triangle.J.Y) +
(triangle.K.X - triangle.J.X) * (triangle.J.X - triangle.I.X)) / denominator_K;
K[1, 2] = ((triangle.K.Y - triangle.I.Y) * (triangle.I.Y - triangle.J.Y) +
(triangle.I.X - triangle.K.X) * (triangle.J.X - triangle.I.X)) / denominator_K;
K[1, 0] = K[0, 1];
K[2, 0] = K[0, 2];
K[2, 1] = K[1, 2];
//--------------------------------------------------------------------------------------------------
//------------------------------make matrix K_with_wave and vektor F---------------------------------
F[0] = 0.0;
F[1] = 0.0;
F[2] = 0.0;
if (contour.Contains(triangle.I))
{
if (contour.Contains(triangle.J)) //if IJ
{
points_index_difference = contour.FindIndex( p => p.Index == triangle.I.Index)
- contour.FindIndex( p => p.Index == triangle.J.Index);
if ((points_index_difference == 1) || (points_index_difference == -1)
|| (points_index_difference == contour.Count - 1))
{// if I and J are neighbors
koefficient_line_segment = triangle.IJ.Length / 3.0;
K[0, 0] += koefficient_line_segment; // (length of IJ) / 3
K[1, 1] += koefficient_line_segment; // (length of IJ) / 3
koefficient_line_segment = triangle.IJ.Length / 6.0;
K[0, 1] += koefficient_line_segment; // (length of IJ) / 6
K[1, 0] += koefficient_line_segment; // (length of IJ) / 6
koefficient_line_segment = (triangle.I.T + triangle.J.T) * triangle.IJ.Length / 4.0;
double f0 = FindKoefF(triangle.I, triangle.I, triangle.J, triangle);
double f1 = FindKoefF(triangle.J, triangle.I, triangle.J, triangle);
F[0] += f0;
F[1] += f1;
}
}
if (contour.Contains(triangle.K)) //if KI
{
points_index_difference = contour.FindIndex(p => p.Index == triangle.I.Index)
- contour.FindIndex(p => p.Index == triangle.K.Index);
if ((points_index_difference == 1) || (points_index_difference == -1)
|| (points_index_difference == contour.Count - 1))
{// if I and K are neighbors
koefficient_line_segment = triangle.KI.Length / 3.0;
K[0, 0] += koefficient_line_segment; //(length of KI) / 3
K[2, 2] += koefficient_line_segment; //(length of KI) / 3
koefficient_line_segment = triangle.KI.Length / 6.0;
K[0, 2] += koefficient_line_segment; //(length of KI) / 6
//.........这里部分代码省略.........