return x > y ? y : x;\r
}\r
\r
+void inline switch_site(double& b, double& d, double& t, double& v, double& d1,\r
+ double& d2) {\r
+ double tmp = 0;\r
+\r
+ // kleine Seite nach vorn (x1 y1)\r
+ if (b > t) {\r
+ tmp = b;\r
+ b = t;\r
+ t = tmp;\r
+ d1 = -d1;\r
+ }\r
+\r
+ // kleine Seite nach vorn (x2 y2)\r
+ if (d > v) {\r
+ tmp = d;\r
+ d = v;\r
+ v = tmp;\r
+ d2 = -d2;\r
+ }\r
+}\r
+\r
+void inline switch_dim(double& b, double& d, double& t, double& v, double& d1,\r
+ double& d2) {\r
+ if (b * b + t * t > d * d + v * v) {\r
+ double tmp = 0;\r
+\r
+ tmp = b;\r
+ b = d;\r
+ d = tmp;\r
+ tmp = t;\r
+ t = v;\r
+ v = tmp;\r
+\r
+ tmp = d1;\r
+ d1 = d2;\r
+ d2 = tmp;\r
+ }\r
+}\r
+\r
+double inline dist2(double b, double d, double t, double v, double d1, double d2,\r
+ double d3) {\r
+ double dis1= 0,dis2 = 0;\r
+ if (d1 < 0)\r
+ dis1 = -d1 - t;\r
+ else\r
+ dis1 = d1 - b;\r
+ if (dis1 < 0)\r
+ dis1 = 0;\r
+\r
+ if (d2 < 0)\r
+ dis2 = -d2 - v;\r
+ else\r
+ dis2 = d2 - d;\r
+ if (dis2 < 0)\r
+ dis2 = 0;\r
+\r
+ return dis1*dis1+dis2*dis2+d3*d3;\r
+}\r
+\r
+double inline dist(double b, double d, double t, double v, double d1, double d2,\r
+ double d3) {\r
+ return sqrt(dist2(b, d, t, v, d1, d2, d3));\r
+}\r
+\r
double inline f_A(double x1, double x2, double y1, double y2, double l) {\r
return 1. / sqrt((x1 - y1) * (x1 - y1) + (x2 - y2) * (x2 - y2) + l * l);\r
}\r
double d3, double* zeta) {\r
double tmp = 0;\r
\r
- // kleine Seite nach vorn\r
- if (b > t) {\r
- tmp = b;\r
- b = t;\r
- t = tmp;\r
- d1 = -d1;\r
- }\r
-\r
- // kleine Seite nach vorn\r
- if (d > v) {\r
- tmp = d;\r
- d = v;\r
- v = tmp;\r
- d2 = -d2;\r
- }\r
+ //kurze Seite nach vorn\r
+ switch_site(b, d, t, v, d1, d2);\r
\r
- if ((t * t + v * v) < zeta[0] * (d1 * d1 + d2 * d2 + d3 * d3)) {\r
+ if ((t * t + v * v) < zeta[0] * dist2(b, d, t, v, d1, d2, d3)) {\r
return calcParIntQ(b, d, t, v, d1, d2, d3);\r
} else {\r
return calcParIntA(b, d, t, v, d1, d2, d3);\r
double cParO3(double b, double d, double t, double v, double d1, double d2,\r
double d3, double* zeta) {\r
\r
- double tmp = 0;\r
-\r
- // kleine Seite nach vorn (x1 y1)\r
- if (b > t) {\r
- tmp = b;\r
- b = t;\r
- t = tmp;\r
- d1 = -d1;\r
- }\r
+ //kurze Seite nach vorn\r
+ switch_site(b, d, t, v, d1, d2);\r
\r
- // kleine Seite nach vorn (x2 y2)\r
- if (d > v) {\r
- tmp = d;\r
- d = v;\r
- v = tmp;\r
- d2 = -d2;\r
- }\r
-\r
- if ((b * b + d * d) < zeta[0] * (d1 * d1 + d2 * d2 + d3 * d3)) {\r
+ if ((b * b + d * d) < zeta[0] * dist2(b, d, t, v, d1, d2, d3)) {\r
// cout << "E";\r
return calcParIntQX1X2(b, d, t, v, d1, d2, d3);\r
} else {\r
double d3, double* zeta) {\r
\r
double tmp = 0;\r
+ double dist = dist2(b, d, t, v, d1, d2, d3);\r
\r
- // kleine Seite nach vorn\r
- if (b > t) {\r
- tmp = b;\r
- b = t;\r
- t = tmp;\r
- d1 = -d1;\r
- }\r
-\r
- // kleine Seite nach vorn\r
- if (d > v) {\r
- tmp = d;\r
- d = v;\r
- v = tmp;\r
- d2 = -d2;\r
- }\r
+ //kurze Seite nach vorn\r
+ switch_site(b, d, t, v, d1, d2);\r
\r
- if ((t * t + v * v) < zeta[1] * (d1 * d1 + d2 * d2 + d3 * d3)) {\r
+ if ((t * t + v * v) < zeta[1] * dist) {\r
\r
- if ((b * b + d * d) < zeta[0] * (d1 * d1 + d2 * d2 + d3 * d3)) {\r
+ if ((b * b + d * d) < zeta[0] * dist) {\r
return calcParIntQX1X2(b, d, t, v, d1, d2, d3);\r
} else {\r
return calcParIntA(b, d, t, v, d1, d2, d3);\r
//namespace slpR {
- // sol = g0(p,y,x,l);
+// sol = g0(p,y,x,l);
// double g_AY(double, double, double, double);
- // sol = g0(p,y,x,l);
+// sol = g0(p,y,x,l);
// double g_QY(double, double, double, double);
- // sol = G00(p,y1,y2,x1,x2,l);
+// sol = G00(p,y1,y2,x1,x2,l);
// double G_AY1Y2(double, double, double, double, double, double);
- // sol = G00(p,y1,y2,x1,x2,l);
+// sol = G00(p,y1,y2,x1,x2,l);
// double G_AY2X2(double, double, double, double, double);
- // sol = G00(p,y1,y2,x1,x2,l);
+// sol = G00(p,y1,y2,x1,x2,l);
// double G_QY1Y2(double, double, double, double, double, double);
// double Gs_AX2Y1Y2(double, double, double, double, double, double);
- // sol = F_par(x1,x2,y1,y2,d1,d2,d3);
+// sol = F_par(x1,x2,y1,y2,d1,d2,d3);
// double F_par(double, double, double, double, double, double, double);
- // sol = F_ort(x1,x2,y2,y3,d1,d2,d3);
+// sol = F_ort(x1,x2,y2,y3,d1,d2,d3);
// double F_ort(double, double, double, double, double, double, double);
- // sol = quad0Int4((F_par/F_ort),b,d,t,v,d1,d2,d3);
+// sol = quad0Int4((F_par/F_ort),b,d,t,v,d1,d2,d3);
// double apply0Int4(
//double(*)(double, double, double, double, double, double, double),
- //double, double, double, double, double, double, double);
- // double apply0Int2(
- //double(*)(double, double, double, double, double, double, double),
- //double, double, double, double, double, double, double);
-
- // sol = calcParInt.(b,d,t,v,d1,d2,d3);
- double calcParIntA(double, double, double, double, double, double, double);
- double calcParIntQX1X2(double, double, double, double, double, double, double);
- double calcParIntQY1X1(double, double, double, double, double, double, double);
- double calcParIntQY1(double, double, double, double, double, double, double);
- double calcParIntQ(double, double, double, double, double, double, double);
-
- // sol = calcOrtInt.(b,d,t,v,d1,d2,d3);
- double calcOrtIntA(double, double, double, double, double, double, double);
- double calcOrtIntQX1X2(double, double, double, double, double, double, double);
-
-
-
- //Voll Analytische Berechnung
- double calcParIntO0(double, double, double, double, double, double, double,
- double);
- double calcOrtIntO0(double, double, double, double, double, double, double,
- double);
-
- // Elemente Vertauschen
- // sol = calc...Int01(b,d,t,v,d1,d2,d3);
- double calcParIntO1(double, double, double, double, double, double, double,
- double);
- double calcOrtIntO1(double, double, double, double, double, double, double,
- double);
-
- // Quadratur ueber kleineres Element
- // sol = calc...Int02(b,d,t,v,d1,d2,d3,eta);
- double calcParIntO2(double, double, double, double, double, double, double,
- double);
- double calcOrtIntO2(double, double, double, double, double, double, double,
- double);
-
- // Quadratur kuerzere Achse/Seite
- // sol = calc...Int03(b,d,t,v,d1,d2,d3,eta);
- double calcParIntO3(double, double, double, double, double, double, double,
- double);
- double calcOrtIntO3(double, double, double, double, double, double, double,
- double);
-
-
- //Automatische entscheidung, welche Quad verwendet werden soll
- // sol = cParIntX(b,d,t,v,d1,d2,d3,eta);
-
- //Voll Analytisch
- double cParO1(double, double, double, double, double, double, double,
- double*);
- //A oder Q
- double cParO2(double, double, double, double, double, double, double,
- double*);
- //A oder Qx1x2
- double cParO3(double, double, double, double, double, double, double,
- double*);
- // A oder Q oder Qx1x2
- double cParO4(double, double, double, double, double, double, double,
- double*);
-
+//double, double, double, double, double, double, double);
+// double apply0Int2(
+//double(*)(double, double, double, double, double, double, double),
+//double, double, double, double, double, double, double);
+
+// sol = calcParInt.(b,d,t,v,d1,d2,d3);
+double calcParIntA(double, double, double, double, double, double, double);
+double calcParIntQX1X2(double, double, double, double, double, double, double);
+double calcParIntQY1X1(double, double, double, double, double, double, double);
+double calcParIntQY1(double, double, double, double, double, double, double);
+double calcParIntQ(double, double, double, double, double, double, double);
+
+// sol = calcOrtInt.(b,d,t,v,d1,d2,d3);
+double calcOrtIntA(double, double, double, double, double, double, double);
+double calcOrtIntQX1X2(double, double, double, double, double, double, double);
+
+//Voll Analytisch
+double cParO1(double, double, double, double, double, double, double, double*);
+//A oder Q
+double cParO2(double, double, double, double, double, double, double, double*);
+//A oder Qx1x2
+double cParO3(double, double, double, double, double, double, double, double*);
+// A oder Q oder Qx1x2
+double cParO4(double, double, double, double, double, double, double, double*);
//}
#endif