//C++ TO C# CONVERTER WARNING: The original C++ declaration of the following method implementation was not found: public void SetFreeZoneTransformation(Vector devp, int tolclass) { double lam1 = 1.0 / tolclass; double lam2 = 1.0 - lam1; double[] mem1 = new double[100]; double[] mem2 = new double[100]; double[] mem3 = new double[100]; int vs = oldutofreearea.Height(); FlatVector devfree = new FlatVector(vs, ref mem1); int fzs = freezone.Size(); transfreezone.SetSize(fzs); if (tolclass <= oldutofreearea_i.Size()) { oldutofreearea_i[tolclass - 1].Mult(devp, devfree.functorMethod); Array <Point2d> fzi = *freezone_i[tolclass - 1]; for (int i = 0; i < fzs; i++) { transfreezone[i].X() = fzi[i].X() + devfree.functorMethod[2 * i]; transfreezone[i].Y() = fzi[i].Y() + devfree.functorMethod[2 * i + 1]; } } else { FlatVector devfree1 = new FlatVector(vs, ref mem2); FlatVector devfree2 = new FlatVector(vs, ref mem3); oldutofreearea.Mult(devp, devfree1.functorMethod); oldutofreearealimit.Mult(devp, devfree2.functorMethod); devfree.Set2.functorMethod(lam1, devfree1.functorMethod, lam2, devfree2.functorMethod); for (int i = 0; i < fzs; i++) { transfreezone[i].X() = lam1 * freezone[i].X() + lam2 * freezonelimit[i].X() + devfree.functorMethod[2 * i]; transfreezone[i].Y() = lam1 * freezone[i].Y() + lam2 * freezonelimit[i].Y() + devfree.functorMethod[2 * i + 1]; } } if (fzs > 0) { fzmaxx = fzminx = transfreezone[0].X(); fzmaxy = fzminy = transfreezone[0].Y(); } for (int i = 1; i < fzs; i++) { if (transfreezone[i].X() > fzmaxx) { fzmaxx = transfreezone[i].X(); } if (transfreezone[i].X() < fzminx) { fzminx = transfreezone[i].X(); } if (transfreezone[i].Y() > fzmaxy) { fzmaxy = transfreezone[i].Y(); } if (transfreezone[i].Y() < fzminy) { fzminy = transfreezone[i].Y(); } } for (int i = 0; i < fzs; i++) { Point2d p1 = transfreezone[i]; Point2d p2 = transfreezone[(i + 1) % fzs]; Vec2d vn = new Vec2d(p2.Y() - p1.Y(), p1.X() - p2.X()); double len2 = vn.Length2(); if (len2 < 1e-10) { freesetinequ(i, 0) = 0; freesetinequ(i, 1) = 0; freesetinequ(i, 2) = -1; } else { vn /= ngsimd.GlobalMembers.sqrt(len2); // scaling necessary ? freesetinequ(i, 0) = vn.X(); freesetinequ(i, 1) = vn.Y(); freesetinequ(i, 2) = -(p1.X() * vn.X() + p1.Y() * vn.Y()); } } }