Fortran SUBROUTINE PREXYA to C Function Conversion and Explanation
#include\u003cstdio.h\u003e\n#include\u003cstdlib.h\u003e\n\nvoid PREXYA(int *IXYD, double *XX, double *YY, double XA, double YA, int NK) {\n double E1[2], E2[2], E3[2], E4[2];\n *IXYD = 0;\n E1[0] = XX[0] - XA;\n E1[1] = YY[0] - YA;\n E2[0] = XX[1] - XA;\n E2[1] = YY[1] - YA;\n E3[0] = XX[2] - XA;\n E3[1] = YY[2] - YA;\n E4[0] = XX[3] - XA;\n E4[1] = YY[3] - YA;\n double Z12 = E1[0] * E2[1] - E2[0] * E1[1];\n if (Z12 \u003e= -1.0e-50) {\n double Z23 = E2[0] * E3[1] - E3[0] * E2[1];\n if (Z23 \u003e= -1.0e-50) {\n double Z31 = E3[0] * E1[1] - E1[0] * E3[1];\n if (Z31 \u003e= -1.0e-50) {\n *IXYD = 1;\n goto label_100;\n }\n }\n }\n double Z13 = E1[0] * E3[1] - E3[0] * E1[1];\n if (Z13 \u003e= -1.0e-50) {\n double Z34 = E3[0] * E4[1] - E4[0] * E3[1];\n if (Z34 \u003e= -1.0e-50) {\n double Z41 = E4[0] * E1[1] - E1[0] * E4[1];\n if (Z41 \u003e= -1.0e-50) {\n *IXYD = 2;\n }\n }\n }\n label_100: return;\n}\n\nint main() {\n int IXYD;\n double XX[4] = {1.0, 2.0, 3.0, 4.0};\n double YY[4] = {5.0, 6.0, 7.0, 8.0};\n double XA = 9.0;\n double YA = 10.0;\n int NK = 4;\n PREXYA(&IXYD, XX, YY, XA, YA, NK);\n printf("IXYD = %d\n", IXYD);\n return 0;\n}\n
原文地址: https://www.cveoy.top/t/topic/pxiI 著作权归作者所有。请勿转载和采集!