double inline min(double x, double y) {\r
return x > y ? y : x;\r
}\r
+\r
/*\r
* kleinere Seiten nach vorn und dadurch kleinerer Durchmesser nach vorn\r
*/\r
-void inline switch_site(double& b, double& d, double& t, double& v, double& d1,\r
- double& d2) {\r
+void inline switch_site_par(double& b, double& d, double& t, double& v,\r
+ double& d1, double& d2) {\r
double tmp = 0;\r
\r
// kleine Seite nach vorn (x1 y1)\r
}\r
}\r
\r
-void inline switch_dim(double& b, double& d, double& t, double& v, double& d1,\r
- double& d2) {\r
+/*\r
+ * kleinere Seiten nach vorn und dadurch kleinerer Durchmesser nach vorn\r
+ */\r
+void inline switch_site_ort(double& b, double& d, double& t, double& v,\r
+ double& d1, double& d2, double& d3) {\r
+ double tmp = 0;\r
+\r
+ // kleine Seite nach vorn (x2 y2)\r
+ if (d > t) {\r
+ tmp = d;\r
+ d = t;\r
+ t = tmp;\r
+ d2 = -d2;\r
+ }\r
+\r
+ // kleine Seite nach vorn (x1 y3)\r
+ if (b > v) {\r
+ tmp = b;\r
+ b = v;\r
+ v = tmp;\r
+ tmp = -d1;\r
+ d1 = -d3;\r
+ d3 = tmp;\r
+ }\r
+}\r
+\r
+void inline switch_dim_par(double& b, double& d, double& t, double& v,\r
+ double& d1, double& d2) {\r
//\r
if (b * b + t * t > d * d + v * v) {\r
double tmp = 0;\r
return dis1 * dis1 + dis2 * dis2 + dis3 * dis3;\r
}\r
\r
-\r
/*\r
* gibt den Abstand in einer Richtung zum Quadrat zurueck\r
*/\r
return dis1 * dis1;\r
}\r
\r
-\r
double inline f_par(double x1, double x2, double y1, double y2, double d1,\r
double d2, double d3) {\r
return 1.\r
\r
double inline FY1Y2_par(double x1, double x2, double y1, double y2, double d1,\r
double d2, double d3) {\r
- return G_AY1Y2(-0.5, y1 + d1, y2 + d2, x1, x2, d3);\r
+ return G_AY1Y2(-0.5, y1, y2, x1 - d1, x2 - d2, d3);\r
}\r
\r
-double inline FY2X2_par(double y1, double x1, double y2, double x2, double d1,\r
+//double inline FY2X2_par(double y1, double x1, double y2, double x2, double d1,\r
+// double d2, double d3) {\r
+// return G_AY2X2(y1 + d1, y2 + d2, x1, x2, d3);\r
+//}\r
+\r
+double inline FY2Y3_ort(double x1, double x2, double y2, double y3, double d1,\r
double d2, double d3) {\r
- return G_AY2X2(y1 + d1, y2 + d2, x1, x2, d3);\r
+ return G_AY1Y2(-0.5, y2 , y3 , x2-d2, -d3, x1-d1);\r
}\r
\r
/*\r
double tmp = 0;\r
\r
//kurze Seite nach vorn\r
- switch_site(b, d, t, v, d1, d2);\r
+ switch_site_par(b, d, t, v, d1, d2);\r
\r
//kurze Achse nach vorn\r
-// switch_dim(b, d, t, v, d1, d2);\r
+// switch_dim_par(b, d, t, v, d1, d2);\r
\r
if (zeta[0] * zeta[0] * (t * t + v * v) < dist2_par(b, d, t, v, d1, d2, d3))\r
return intQ4<f_par>(b, d, t, v, d1, d2, d3);\r
double tmp = 0, dis2 = 0;\r
\r
//kurze Seite nach vorn\r
-// switch_site(b, d, t, v, d1, d2);\r
- if (d > t) {\r
- tmp = d;\r
- d = t;\r
- t = tmp;\r
- d2 = -d2;\r
- }\r
-\r
- if (b > v) {\r
- tmp = b;\r
- b = v;\r
- v = tmp;\r
- tmp = -d1;\r
- d1 = -d3;\r
- d3 = tmp;\r
- }\r
+ switch_site_ort(b, d, t, v, d1, d2, d3);\r
\r
//kurze Achse nach vorn\r
-// switch_dim(b, d, t, v, d1, d2);\r
+// switch_dim_par(b, d, t, v, d1, d2);\r
\r
- if (zeta[0] * zeta[0] * (t * t + v * v) < dist2_ort(b,d,t,v,d1,d2,d3)){\r
-// mexPrintf("Was used!\n");\r
+ if (zeta[0] * zeta[0] * (t * t + v * v) < dist2_ort(b, d, t, v, d1, d2, d3))\r
return intQ4<f_ort>(b, d, t, v, d1, d2, d3);\r
- }\r
\r
return intA4<F_ort>(b, d, t, v, d1, d2, d3);\r
}\r
double d3, double* zeta) {\r
\r
//kurze Seite nach vorn\r
- switch_site(b, d, t, v, d1, d2);\r
+ switch_site_par(b, d, t, v, d1, d2);\r
\r
//kurze Achse nach vorn\r
-// switch_dim(b, d, t, v, d1, d2);\r
+// switch_dim_par(b, d, t, v, d1, d2);\r
\r
if (zeta[1] * zeta[1] * (b * b + d * d) < dist2_par(b, d, t, v, d1, d2, d3))\r
return intQ2A2<FY1Y2_par>(b, d, t, v, d1, d2, d3);\r
return intA4<F_par>(b, d, t, v, d1, d2, d3);\r
}\r
\r
+double cOrtO3(double b, double d, double t, double v, double d1, double d2,\r
+ double d3, double* zeta) {\r
+ double tmp = 0, dis2 = 0;\r
+\r
+ //kurze Seite nach vorn\r
+ switch_site_ort(b, d, t, v, d1, d2, d3);\r
+\r
+ //kurze Achse nach vorn\r
+// switch_dim_par(b, d, t, v, d1, d2);\r
+\r
+ if (zeta[1] * zeta[1] * (b * b + d * d) < dist2_ort(b, d, t, v, d1, d2, d3))\r
+ return intQ2A2<FY2Y3_ort>(b, d, t, v, d1, d2, d3);\r
+\r
+ if (zeta[0] * zeta[0] * (t * t + v * v) < dist2_ort(b, d, t, v, d1, d2, d3))\r
+ return intQ4<f_ort>(b, d, t, v, d1, d2, d3);\r
+\r
+ return intA4<F_ort>(b, d, t, v, d1, d2, d3);\r
+}\r
+\r
double cParO4(double b, double d, double t, double v, double d1, double d2,\r
double d3, double* zeta) {\r
\r
double tmp = 0;\r
\r
//kurze Seite nach vorn\r
- switch_site(b, d, t, v, d1, d2);\r
+ switch_site_par(b, d, t, v, d1, d2);\r
\r
//kurze Achse nach vorn\r
- switch_dim(b, d, t, v, d1, d2);\r
+ switch_dim_par(b, d, t, v, d1, d2);\r
\r
if ((t * t + v * v) < zeta[0] * dist2_par(b, d, t, v, d1, d2, d3))\r
return intQ4<f_par>(b, d, t, v, d1, d2, d3);\r