转换成C代码 SUBROUTINE LAMBDAPPXTYTXXYYZZ IMPLICIT REAL8A-HO-Z DIMENSION PP33XT4YT4XX4YY4ZZ4 DIMENSION E313E423EZ3EX3EY3 CALL NOLSHEAEEZE31E42XXYYZZ EX1=XX2-XX1
#include <stdio.h> #include <math.h>
void LAMBDA(double PP[3][3], double XT[4], double YT[4], double XX[4], double YY[4], double ZZ[4]) { double E31[3], E42[3], EZ[3], EX[3], EY[3]; int i; // Call NOLSHEAE subroutine // ... EX[0] = XX[1] - XX[0]; EX[1] = YY[1] - YY[0]; EX[2] = ZZ[1] - ZZ[0]; double DEX = sqrt(EX[0]EX[0] + EX[1]EX[1] + EX[2]EX[2]) + 1.0e-50; EX[0] /= DEX; EX[1] /= DEX; EX[2] /= DEX; // Call AXB3UN subroutine // ... for (i = 0; i < 3; i++) { PP[0][i] = EX[i]; PP[1][i] = EY[i]; PP[2][i] = EZ[i]; } double DE31 = sqrt(E31[0]E31[0] + E31[1]E31[1] + E31[2]E31[2]) + 1.0e-50; E31[0] /= DE31; E31[1] /= DE31; E31[2] /= DE31; XT[2] = DE31(E31[0]EX[0] + E31[1]EX[1] + E31[2]EX[2]); YT[2] = sqrt(DE31DE31 - XT[2]XT[2]); double DE42 = sqrt(E42[0]E42[0] + E42[1]E42[1] + E42[2]E42[2]) + 1.0e-50; E42[0] /= DE42; E42[1] /= DE42; E42[2] /= DE42; double DX21 = XX[1] - XX[0]; double DY21 = YY[1] - YY[0]; double DZ21 = ZZ[1] - ZZ[0]; double D21 = sqrt(DX21DX21 + DY21DY21 + DZ21DZ21); double DX41 = XX[3] - XX[0]; double DY41 = YY[3] - YY[0]; double DZ41 = ZZ[3] - ZZ[0]; double D41 = sqrt(DX41DX41 + DY41DY41 + DZ41DZ41) + 1.0e-50; DX41 /= D41; DY41 /= D41; DZ41 /= D41; XT[3] = D41(DX41EX[0] + DY41EX[1] + DZ41EX[2]); YT[3] = DE42(E42[0]*EY[0] + E42[1]*EY[1] + E42[2]*EY[2]); XT[0] = 0.0; YT[0] = 0.0; XT[1] = D21; YT[1] = 0.0;
原文地址: https://www.cveoy.top/t/topic/fKPP 著作权归作者所有。请勿转载和采集!