├── .DS_Store ├── .gitignore ├── CMakeLists.txt ├── JPCK ├── converter.cpp ├── converter.vcxproj └── predicates │ ├── README.txt │ ├── TODO.txt │ ├── direct │ ├── dotProductSign2D.txt │ ├── dotProductSign3D.txt │ ├── inGabrielSphere.txt │ ├── inSphere.txt │ └── incircle.txt │ ├── indirect-old │ ├── inSphere_LEEEE.txt │ ├── inSphere_LLEEE.txt │ ├── inSphere_LLLEE.txt │ ├── inSphere_LLLLE.txt │ ├── inSphere_LLLLL.txt │ ├── inSphere_LLLLT.txt │ ├── inSphere_LLLTE.txt │ ├── inSphere_LLLTT.txt │ ├── inSphere_LLTEE.txt │ ├── inSphere_LLTTE.txt │ ├── inSphere_LLTTT.txt │ ├── inSphere_LTEEE.txt │ ├── inSphere_LTTEE.txt │ ├── inSphere_LTTTE.txt │ ├── inSphere_LTTTT.txt │ ├── inSphere_TEEEE.txt │ ├── inSphere_TTEEE.txt │ ├── inSphere_TTTEE.txt │ ├── inSphere_TTTTE.txt │ ├── inSphere_TTTTT.txt │ ├── incircle_indirect_SEEE.txt │ ├── incircle_indirect_SSEE.txt │ ├── incircle_indirect_SSSE.txt │ ├── incircle_indirect_SSSS.txt │ ├── incirclexy_indirect_LEEE.txt │ ├── incirclexy_indirect_LLEE.txt │ ├── incirclexy_indirect_LLLE.txt │ ├── incirclexy_indirect_LLLL.txt │ ├── lambda2d_SSI.txt │ ├── lambda3d_LNC.txt │ ├── lambda3d_LPI.txt │ ├── lambda3d_TPI.txt │ ├── lessThanOnX_LE.txt │ ├── lessThanOnX_LL.txt │ ├── lessThanOnX_LT.txt │ ├── lessThanOnX_TE.txt │ ├── lessThanOnX_TT.txt │ ├── lessThanOnY_LE.txt │ ├── lessThanOnY_LL.txt │ ├── lessThanOnY_LT.txt │ ├── lessThanOnY_TE.txt │ ├── lessThanOnY_TT.txt │ ├── lessThanOnZ_LE.txt │ ├── lessThanOnZ_LL.txt │ ├── lessThanOnZ_LT.txt │ ├── lessThanOnZ_TE.txt │ ├── lessThanOnZ_TT.txt │ ├── orient2d_indirect_SEE.txt │ ├── orient2d_indirect_SSE.txt │ ├── orient2d_indirect_SSS.txt │ ├── orient2dxy_indirect_LEE.txt │ ├── orient2dxy_indirect_LLE.txt │ ├── orient2dxy_indirect_LLL.txt │ ├── orient2dxy_indirect_LLT.txt │ ├── orient2dxy_indirect_LTE.txt │ ├── orient2dxy_indirect_LTT.txt │ ├── orient2dxy_indirect_TEE.txt │ ├── orient2dxy_indirect_TTE.txt │ ├── orient2dxy_indirect_TTT.txt │ ├── orient2dyz_indirect_LEE.txt │ ├── orient2dyz_indirect_LLE.txt │ ├── orient2dyz_indirect_LLL.txt │ ├── orient2dyz_indirect_LLT.txt │ ├── orient2dyz_indirect_LTE.txt │ ├── orient2dyz_indirect_LTT.txt │ ├── orient2dyz_indirect_TEE.txt │ ├── orient2dyz_indirect_TTE.txt │ ├── orient2dyz_indirect_TTT.txt │ ├── orient2dzx_indirect_LEE.txt │ ├── orient2dzx_indirect_LLE.txt │ ├── orient2dzx_indirect_LLL.txt │ ├── orient2dzx_indirect_LLT.txt │ ├── orient2dzx_indirect_LTE.txt │ ├── orient2dzx_indirect_LTT.txt │ ├── orient2dzx_indirect_TEE.txt │ ├── orient2dzx_indirect_TTE.txt │ ├── orient2dzx_indirect_TTT.txt │ ├── orient3d_indirect_LEEE.txt │ ├── orient3d_indirect_LLEE.txt │ ├── orient3d_indirect_LLLE.txt │ ├── orient3d_indirect_LLLL.txt │ ├── orient3d_indirect_LLLT.txt │ ├── orient3d_indirect_LLTE.txt │ ├── orient3d_indirect_LLTT.txt │ ├── orient3d_indirect_LTEE.txt │ ├── orient3d_indirect_LTTE.txt │ ├── orient3d_indirect_LTTT.txt │ ├── orient3d_indirect_TEEE.txt │ ├── orient3d_indirect_TTEE.txt │ ├── orient3d_indirect_TTTE.txt │ └── orient3d_indirect_TTTT.txt │ └── indirect │ ├── dotProductSign2D_EEI.txt │ ├── dotProductSign2D_IEE.txt │ ├── dotProductSign2D_IEI.txt │ ├── dotProductSign2D_IIE.txt │ ├── dotProductSign2D_III.txt │ ├── dotProductSign3D_EEI.txt │ ├── dotProductSign3D_IEE.txt │ ├── dotProductSign3D_IEI.txt │ ├── dotProductSign3D_IIE.txt │ ├── dotProductSign3D_III.txt │ ├── inGabrielSphere_EIEE.txt │ ├── inGabrielSphere_EIIE.txt │ ├── inGabrielSphere_EIII.txt │ ├── inGabrielSphere_IEEE.txt │ ├── inGabrielSphere_IIEE.txt │ ├── inGabrielSphere_IIIE.txt │ ├── inGabrielSphere_IIII.txt │ ├── inSphere_IEEEE.txt │ ├── inSphere_IIEEE.txt │ ├── inSphere_IIIEE.txt │ ├── inSphere_IIIIE.txt │ ├── inSphere_IIIII.txt │ ├── incircle_indirect_IEEE.txt │ ├── incircle_indirect_IIEE.txt │ ├── incircle_indirect_IIIE.txt │ ├── incircle_indirect_IIII.txt │ ├── incirclexy_indirect_IEEE.txt │ ├── incirclexy_indirect_IIEE.txt │ ├── incirclexy_indirect_IIIE.txt │ ├── incirclexy_indirect_IIII.txt │ ├── lambda2d_SSI.txt │ ├── lambda3d_BPT.txt │ ├── lambda3d_LNC.txt │ ├── lambda3d_LPI.txt │ ├── lambda3d_TPI.txt │ ├── lessThanOnX_IE.txt │ ├── lessThanOnX_II.txt │ ├── lessThanOnY_IE.txt │ ├── lessThanOnY_II.txt │ ├── lessThanOnZ_IE.txt │ ├── lessThanOnZ_II.txt │ ├── orient2d_indirect_IEE.txt │ ├── orient2d_indirect_IIE.txt │ ├── orient2d_indirect_III.txt │ ├── orient2dxy_indirect_IEE.txt │ ├── orient2dxy_indirect_IIE.txt │ ├── orient2dxy_indirect_III.txt │ ├── orient2dyz_indirect_IEE.txt │ ├── orient2dyz_indirect_IIE.txt │ ├── orient2dyz_indirect_III.txt │ ├── orient2dzx_indirect_IEE.txt │ ├── orient2dzx_indirect_IIE.txt │ ├── orient2dzx_indirect_III.txt │ ├── orient3d_indirect_IEEE.txt │ ├── orient3d_indirect_IIEE.txt │ ├── orient3d_indirect_IIIE.txt │ └── orient3d_indirect_IIII.txt ├── LICENSE ├── README.md ├── include ├── hand_optimized_predicates.hpp ├── implicit_point.h ├── implicit_point.hpp ├── indirect_predicates.h ├── indirect_predicates.hpp └── numerics.h ├── test.cpp └── update_predicates └── update_source_code.bat /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MarcoAttene/Indirect_Predicates/caddef5e3641e08ff2dc926de6d11aa1d995bf1c/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | JPCK/.vs 2 | JPCK/x64 3 | JPCK/converter/x64 4 | JPCK/converter.sln 5 | JPCK/converter.vcxproj.user 6 | JPCK/predicates/other 7 | build 8 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.10) 2 | 3 | # Set the target architecture. 4 | # All modern x86/x64 processors support AVX2. 5 | # Older x86/x64 processors may support SSE2 but not AVX2. 6 | # Very old x86/x64 processors, or non x86/x64 7 | # processors, do not support any of the two. 8 | # Modern ARM processors support NEON. 9 | 10 | # --- Uncomment max one of the following lines --- 11 | 12 | # #Generic build 13 | #set(ENABLE_SSE2 True) #Build for x86-64 with SSE2 14 | set(ENABLE_AVX2 True) #Build for x86-64 with AVX2 15 | #set(ENABLE_ARMNEON True) #Build for ARM with NEON 16 | 17 | # --------- DON NOT EDIT BELOW THIS LINE! -------- 18 | 19 | set(CMAKE_CXX_STANDARD 20) 20 | set(CMAKE_CXX_STANDARD_REQUIRED True) 21 | 22 | # disable SSE and AVX on MacOS 23 | if(APPLE) 24 | set(ENABLE_SSE2 False) 25 | set(ENABLE_AVX2 False) 26 | endif() 27 | 28 | # AVX includes SSE -> make that explicit 29 | if(ENABLE_AVX2) 30 | set(ENABLE_SSE2 True) 31 | endif() 32 | 33 | # Check that no incompatible architectures are slelected 34 | if(ENABLE_ARMNEON AND ENABLE_SSE2) 35 | message(FATAL_ERROR "ARMNEON and SSE2/AVX2 cannot be both set!") 36 | endif() 37 | 38 | # set the project name 39 | project(indirectPredicates) 40 | 41 | # add the executable 42 | add_executable(${PROJECT_NAME} 43 | test.cpp 44 | ) 45 | 46 | # Compiler-specific options 47 | if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") 48 | # grant IEEE 754 compliance; remove security controls; turn off annoying warnings 49 | target_compile_options(${PROJECT_NAME} PUBLIC "/fp:strict;/GS-;/D _CRT_SECURE_NO_WARNINGS") 50 | # set target architecture 51 | if(ENABLE_AVX2) 52 | target_compile_options(${PROJECT_NAME} PUBLIC "/arch:AVX2") 53 | elseif(ENABLE_SSE2) 54 | target_compile_options(${PROJECT_NAME} PUBLIC "/arch:SSE2") 55 | elseif(ENABLE_ARMNEON) 56 | target_compile_options(${PROJECT_NAME} PUBLIC "/arch:ARMV8.0") 57 | endif() 58 | else() 59 | # set max optimization 60 | target_compile_options(${PROJECT_NAME} PUBLIC -O3) 61 | # grant IEEE 754 compliance 62 | target_compile_options(${PROJECT_NAME} PUBLIC -frounding-math) 63 | # set target architecture 64 | if(ENABLE_AVX2) 65 | target_compile_options(${PROJECT_NAME} PUBLIC "-mavx2") 66 | target_compile_options(${PROJECT_NAME} PUBLIC "-mfma") 67 | elseif(ENABLE_SSE2) 68 | target_compile_options(${PROJECT_NAME} PUBLIC "-msse2") 69 | elseif(ENABLE_ARMNEON) 70 | target_compile_options(${PROJECT_NAME} PUBLIC "-march=armv8-a+simd") 71 | endif() 72 | endif() 73 | 74 | # Public include directory 75 | target_include_directories(${PROJECT_NAME} PUBLIC 76 | . 77 | include 78 | ) 79 | 80 | if(ENABLE_ARMNEON) 81 | include(FetchContent) 82 | 83 | FetchContent_Declare( 84 | simde 85 | URL https://github.com/simd-everywhere/simde/archive/refs/heads/master.zip) 86 | FetchContent_Populate(simde) 87 | message(STATUS "simde is available in " ${simde_SOURCE_DIR}) 88 | 89 | target_include_directories(${PROJECT_NAME} PUBLIC ${simde_SOURCE_DIR}/simde) 90 | target_compile_options(${PROJECT_NAME} PUBLIC -DSIMDE_ENABLE_NATIVE_ALIASES) 91 | endif() 92 | -------------------------------------------------------------------------------- /JPCK/predicates/README.txt: -------------------------------------------------------------------------------- 1 | The code-generation tool can parse files that strictly adhere to the following format. 2 | Each line must be one of the following: 3 | 1) An explicit parameter declaration 4 | 2) An assignment 5 | 3) A comment 6 | 4) An empty line 7 | 5) A lambda declaration 8 | 6) A sign declaration 9 | 7) A nonzero declaration 10 | 11 | 1) Explicit parameter declaration (any number of different variable names) 12 | v1 13 | v1 v2 ... vn 14 | 15 | 2) Assignment 16 | v1 = v2 + v3 17 | v1 = v2 - v3 18 | v1 = v2 * v3 19 | v1 = 2 * v3 20 | 21 | Any variable used (e.g. v2 and v3) must be declared beforehand. An assignment corresponds to an implicit declaration (e.g. of v1). 22 | A previously declared variable may not be reassigned. 23 | If a variable name starts with "lambda" (e.g. lambda_x) it will be considered as the output of a lambda function. 24 | For the lambda determinant use the special variable name "lambda_d". 25 | If a "lambda" variable is found, the whole code is assumed to be a lambda code. 26 | 27 | 3) Comment 28 | // this is a comment 29 | 30 | 5) Lambda declaration 31 | lambda_name(v1,v1,...,vn:lx;degree;size;err_bound;val_bound;ly;degree;size;err_bound;val_bound; ... d;degree;size;err_bound;val_bound) 32 | 33 | where: 34 | lambda_name is the name of the lambda function 35 | v1..vn are the explicit parameters used by lambda (must be declared beforehand) 36 | lx, ly, ..., d are the implicit parameters produced by lambda 37 | 38 | degree is the polynomial degree for the parameter 39 | size is the expansion size for the parameter 40 | err_bound is the error bound for the parameter 41 | val_bound is the value bound for the parameter 42 | The aforementioned four values are produced when compiling the lambda code. 43 | 44 | 6) Sign declaration (deprecated) 45 | SIGN d1 d2 ... dn 46 | where di are normally lambda outputs that determine the final sign 47 | 48 | 7) Nonzero declaration 49 | NONZERO v1 v2 ... vn 50 | means that the predicate returns a boolean value if any of the v's is nonzero 51 | 52 | 53 | ********************************** 54 | 55 | Source equations for indirect predicates 56 | -- 57 | 58 | Lambdas 59 | 2d_SSI = 2D line-line intersection 60 | 3d_LPI = 3D line-plane intersection 61 | 3d_TPI = 3D three planes intersection 62 | 2d3d_LPI = XY coords of the 3D line-plane intersection 63 | 2d3d_TPI = XY coords of the 3D three planes intersection 64 | 65 | -------------------------------------------------------------------------------- /JPCK/predicates/TODO.txt: -------------------------------------------------------------------------------- 1 | misaligned3d_indirect flavours 2 | -------------------------------------------------------------------------------- /JPCK/predicates/direct/dotProductSign2D.txt: -------------------------------------------------------------------------------- 1 | // Sign of (p-q).dot(r-q) 2 | px py rx ry qx qy 3 | lx = px - qx 4 | ly = py - qy 5 | gx = rx - qx 6 | gy = ry - qy 7 | dx = lx * gx 8 | dy = ly * gy 9 | d = dx + dy 10 | -------------------------------------------------------------------------------- /JPCK/predicates/direct/dotProductSign3D.txt: -------------------------------------------------------------------------------- 1 | // Sign of (p-q).dot(r-q) 2 | px py pz rx ry rz qx qy qz 3 | lx = px - qx 4 | ly = py - qy 5 | lz = pz - qz 6 | gx = rx - qx 7 | gy = ry - qy 8 | gz = rz - qz 9 | dx = lx * gx 10 | dy = ly * gy 11 | dz = lz * gz 12 | d1 = dx + dy 13 | d = d1 + dz 14 | -------------------------------------------------------------------------------- /JPCK/predicates/direct/inGabrielSphere.txt: -------------------------------------------------------------------------------- 1 | qx qy qz ax ay az bx by bz cx cy cz 2 | 3 | bax = bx - ax 4 | bay = by - ay 5 | baz = bz - az 6 | cax = cx - ax 7 | cay = cy - ay 8 | caz = cz - az 9 | qax = qx - ax 10 | qay = qy - ay 11 | qaz = qz - az 12 | 13 | cx1 = bay * caz 14 | cx2 = baz * cay 15 | crossbcx = cx1 - cx2 16 | cy1 = baz * cax 17 | cy2 = bax * caz 18 | crossbcy = cy1 - cy2 19 | cz1 = bax * cay 20 | cz2 = bay * cax 21 | crossbcz = cz1 - cz2 22 | 23 | ba2x = bax * bax 24 | ba2y = bay * bay 25 | ba2z = baz * baz 26 | ba2t = ba2x + ba2y 27 | ba2 = ba2t + ba2z 28 | 29 | ca2x = cax * cax 30 | ca2y = cay * cay 31 | ca2z = caz * caz 32 | ca2t = ca2x + ca2y 33 | ca2 = ca2t + ca2z 34 | 35 | calx = cax * ba2 36 | caly = cay * ba2 37 | calz = caz * ba2 38 | balx = bax * ca2 39 | baly = bay * ca2 40 | balz = baz * ca2 41 | abcx = calx - balx 42 | abcy = caly - baly 43 | abcz = calz - balz 44 | 45 | kx1 = abcy * crossbcz 46 | kx2 = abcz * crossbcy 47 | ccax = kx1 - kx2 48 | ky1 = abcz * crossbcx 49 | ky2 = abcx * crossbcz 50 | ccay = ky1 - ky2 51 | kz1 = abcx * crossbcy 52 | kz2 = abcy * crossbcx 53 | ccaz = kz1 - kz2 54 | 55 | cr2x = crossbcx * crossbcx 56 | cr2y = crossbcy * crossbcy 57 | cr2z = crossbcz * crossbcz 58 | cr2t = cr2x + cr2y 59 | c2 = cr2t + cr2z 60 | 61 | c22 = 2 * c2 62 | qa1x = qax * c22 63 | qa1y = qay * c22 64 | qa1z = qaz * c22 65 | qa2x = qa1x - ccax 66 | qa2y = qa1y - ccay 67 | qa2z = qa1z - ccaz 68 | 69 | r1x = qa2x * qa2x 70 | r1y = qa2y * qa2y 71 | r1z = qa2z * qa2z 72 | r1t = r1x + r1y 73 | r1 = r1t + r1z 74 | 75 | r2x = ccax * ccax 76 | r2y = ccay * ccay 77 | r2z = ccaz * ccaz 78 | r2t = r2x + r2y 79 | r2 = r2t + r2z 80 | 81 | ret = r1 - r2 82 | -------------------------------------------------------------------------------- /JPCK/predicates/direct/inSphere.txt: -------------------------------------------------------------------------------- 1 | pax pay paz 2 | pbx pby pbz 3 | pcx pcy pcz 4 | pdx pdy pdz 5 | pex pey pez 6 | 7 | aex = pax - pex 8 | aey = pay - pey 9 | aez = paz - pez 10 | bex = pbx - pex 11 | bey = pby - pey 12 | bez = pbz - pez 13 | cex = pcx - pex 14 | cey = pcy - pey 15 | cez = pcz - pez 16 | dex = pdx - pex 17 | dey = pdy - pey 18 | dez = pdz - pez 19 | 20 | aexbey = aex * bey 21 | bexaey = bex * aey 22 | ab = aexbey - bexaey 23 | bexcey = bex * cey 24 | cexbey = cex * bey 25 | bc = bexcey - cexbey 26 | cexdey = cex * dey 27 | dexcey = dex * cey 28 | cd = cexdey - dexcey 29 | dexaey = dex * aey 30 | aexdey = aex * dey 31 | da = dexaey - aexdey 32 | aexcey = aex * cey 33 | cexaey = cex * aey 34 | ac = aexcey - cexaey 35 | bexdey = bex * dey 36 | dexbey = dex * bey 37 | bd = bexdey - dexbey 38 | 39 | abc1 = aez * bc 40 | abc2 = bez * ac 41 | abc3 = cez * ab 42 | abc4 = abc1 + abc3 43 | abc = abc4 - abc2 44 | 45 | bcd1 = bez * cd 46 | bcd2 = cez * bd 47 | bcd3 = dez * bc 48 | bcd4 = bcd1 + bcd3 49 | bcd = bcd4 - bcd2 50 | 51 | cda1 = cez * da 52 | cda2 = dez * ac 53 | cda3 = aez * cd 54 | cda4 = cda1 + cda3 55 | cda = cda4 + cda2 56 | 57 | dab1 = dez * ab 58 | dab2 = aez * bd 59 | dab3 = bez * da 60 | dab4 = dab1 + dab3 61 | dab = dab4 + dab2 62 | 63 | al1 = aex * aex 64 | al2 = aey * aey 65 | al3 = aez * aez 66 | al4 = al1 + al2 67 | alift = al4 + al3 68 | 69 | bl1 = bex * bex 70 | bl2 = bey * bey 71 | bl3 = bez * bez 72 | bl4 = bl1 + bl2 73 | blift = bl4 + bl3 74 | 75 | cl1 = cex * cex 76 | cl2 = cey * cey 77 | cl3 = cez * cez 78 | cl4 = cl1 + cl2 79 | clift = cl4 + cl3 80 | 81 | dl1 = dex * dex 82 | dl2 = dey * dey 83 | dl3 = dez * dez 84 | dl4 = dl1 + dl2 85 | dlift = dl4 + dl3 86 | 87 | ds1 = dlift * abc 88 | ds2 = clift * dab 89 | dl = ds2 - ds1 90 | 91 | dr1 = blift * cda 92 | dr2 = alift * bcd 93 | dr = dr2 - dr1 94 | 95 | det = dl + dr 96 | -------------------------------------------------------------------------------- /JPCK/predicates/direct/incircle.txt: -------------------------------------------------------------------------------- 1 | pax pay pbx pby pcx pcy pdx pdy 2 | 3 | adx = pax - pdx 4 | ady = pay - pdy 5 | bdx = pbx - pdx 6 | bdy = pby - pdy 7 | cdx = pcx - pdx 8 | cdy = pcy - pdy 9 | 10 | abdeta = adx * bdy 11 | abdetb = bdx * ady 12 | abdet = abdeta - abdetb 13 | 14 | bcdeta = bdx * cdy 15 | bcdetb = cdx * bdy 16 | bcdet = bcdeta - bcdetb 17 | 18 | cadeta = cdx * ady 19 | cadetb = adx * cdy 20 | cadet = cadeta - cadetb 21 | 22 | alifta = adx * adx 23 | aliftb = ady * ady 24 | alift = alifta + aliftb 25 | 26 | blifta = bdx * bdx 27 | bliftb = bdy * bdy 28 | blift = blifta + bliftb 29 | 30 | clifta = cdx * cdx 31 | cliftb = cdy * cdy 32 | clift = clifta + cliftb 33 | 34 | la = alift * bcdet 35 | lb = blift * cadet 36 | lc = clift * abdet 37 | lab = la + lb 38 | 39 | L = lab + lc 40 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LEEEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | 3 | pbx pby pbz 4 | pcx pcy pcz 5 | pdx pdy pdz 6 | pex pey pez 7 | 8 | pexd = pex * d1 9 | peyd = pey * d1 10 | pezd = pez * d1 11 | aex = l1x - pexd 12 | aey = l1y - peyd 13 | aez = l1z - pezd 14 | 15 | bex = pbx - pex 16 | bey = pby - pey 17 | bez = pbz - pez 18 | cex = pcx - pex 19 | cey = pcy - pey 20 | cez = pcz - pez 21 | dex = pdx - pex 22 | dey = pdy - pey 23 | dez = pdz - pez 24 | 25 | aexbey = aex * bey 26 | bexaey = bex * aey 27 | ab = aexbey - bexaey 28 | bexcey = bex * cey 29 | cexbey = cex * bey 30 | bc = bexcey - cexbey 31 | cexdey = cex * dey 32 | dexcey = dex * cey 33 | cd = cexdey - dexcey 34 | dexaey = dex * aey 35 | aexdey = aex * dey 36 | da = dexaey - aexdey 37 | aexcey = aex * cey 38 | cexaey = cex * aey 39 | ac = aexcey - cexaey 40 | bexdey = bex * dey 41 | dexbey = dex * bey 42 | bd = bexdey - dexbey 43 | 44 | abc1 = aez * bc 45 | abc2 = bez * ac 46 | abc3 = cez * ab 47 | abc4 = abc1 + abc3 48 | abc = abc4 - abc2 49 | 50 | bcd1 = bez * cd 51 | bcd2 = cez * bd 52 | bcd3 = dez * bc 53 | bcd4 = bcd1 + bcd3 54 | bcd = bcd4 - bcd2 55 | 56 | cda1 = cez * da 57 | cda2 = dez * ac 58 | cda3 = aez * cd 59 | cda4 = cda1 + cda3 60 | cda = cda4 + cda2 61 | 62 | dab1 = dez * ab 63 | dab2 = aez * bd 64 | dab3 = bez * da 65 | dab4 = dab1 + dab3 66 | dab = dab4 + dab2 67 | 68 | al1 = aex * aex 69 | al2 = aey * aey 70 | al3 = aez * aez 71 | al4 = al1 + al2 72 | alift = al4 + al3 73 | 74 | bl1 = bex * bex 75 | bl2 = bey * bey 76 | bl3 = bez * bez 77 | bl4 = bl1 + bl2 78 | blift = bl4 + bl3 79 | 80 | cl1 = cex * cex 81 | cl2 = cey * cey 82 | cl3 = cez * cez 83 | cl4 = cl1 + cl2 84 | clift = cl4 + cl3 85 | 86 | dl1 = dex * dex 87 | dl2 = dey * dey 88 | dl3 = dez * dez 89 | dl4 = dl1 + dl2 90 | dlift = dl4 + dl3 91 | 92 | ds1 = dlift * abc 93 | ds2 = clift * dab 94 | dlp = ds2 - ds1 95 | dl = dlp * d1 96 | 97 | dr1p = blift * cda 98 | dr1 = dr1p * d1 99 | dr2 = alift * bcd 100 | dr = dr2 - dr1 101 | 102 | det = dl + dr 103 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LLEEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | 3 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 4 | 5 | pcx pcy pcz 6 | pdx pdy pdz 7 | pex pey pez 8 | 9 | pexd = pex * d1 10 | peyd = pey * d1 11 | pezd = pez * d1 12 | aex = l1x - pexd 13 | aey = l1y - peyd 14 | aez = l1z - pezd 15 | 16 | pexd2 = pex * d2 17 | peyd2 = pey * d2 18 | pezd2 = pez * d2 19 | bex = l2x - pexd2 20 | bey = l2y - peyd2 21 | bez = l2z - pezd2 22 | 23 | cex = pcx - pex 24 | cey = pcy - pey 25 | cez = pcz - pez 26 | dex = pdx - pex 27 | dey = pdy - pey 28 | dez = pdz - pez 29 | 30 | aexbey = aex * bey 31 | bexaey = bex * aey 32 | ab = aexbey - bexaey // d1d2 33 | bexcey = bex * cey 34 | cexbey = cex * bey 35 | bc = bexcey - cexbey // d2 36 | cexdey = cex * dey 37 | dexcey = dex * cey 38 | cd = cexdey - dexcey // 39 | dexaey = dex * aey 40 | aexdey = aex * dey 41 | da = dexaey - aexdey // d1 42 | aexcey = aex * cey 43 | cexaey = cex * aey 44 | ac = aexcey - cexaey // d1 45 | bexdey = bex * dey 46 | dexbey = dex * bey 47 | bd = bexdey - dexbey // d2 48 | 49 | abc1 = aez * bc 50 | abc2 = bez * ac 51 | abc3 = cez * ab 52 | abc4 = abc1 + abc3 53 | abc = abc4 - abc2 // d1d2 54 | 55 | bcd1 = bez * cd 56 | bcd2 = cez * bd 57 | bcd3 = dez * bc 58 | bcd4 = bcd1 + bcd3 59 | bcd = bcd4 - bcd2 // d2 60 | 61 | cda1 = cez * da 62 | cda2 = dez * ac 63 | cda3 = aez * cd 64 | cda4 = cda1 + cda3 65 | cda = cda4 + cda2 // d1 66 | 67 | dab1 = dez * ab 68 | dab2 = aez * bd 69 | dab3 = bez * da 70 | dab4 = dab1 + dab3 71 | dab = dab4 + dab2 // d1d2 72 | 73 | al1 = aex * aex 74 | al2 = aey * aey 75 | al3 = aez * aez 76 | al4 = al1 + al2 77 | alift = al4 + al3 // d1^2 78 | 79 | bl1 = bex * bex 80 | bl2 = bey * bey 81 | bl3 = bez * bez 82 | bl4 = bl1 + bl2 83 | blift = bl4 + bl3 // d2^2 84 | 85 | cl1 = cex * cex 86 | cl2 = cey * cey 87 | cl3 = cez * cez 88 | cl4 = cl1 + cl2 89 | clift = cl4 + cl3 // 90 | 91 | dl1 = dex * dex 92 | dl2 = dey * dey 93 | dl3 = dez * dez 94 | dl4 = dl1 + dl2 95 | dlift = dl4 + dl3 // 96 | 97 | ds1 = dlift * abc // d1d2 98 | ds2 = clift * dab // d1d2 99 | dl = ds2 - ds1 // d1d2 100 | dll = dl * d1 101 | dlll = dll * d2 102 | 103 | dr1 = blift * cda // d1 d2^2 104 | dr12 = dr1 * d1 // d1^2 d2^2 105 | dr2 = alift * bcd // d1^2 d2 106 | dr22 = dr2 * d2 // d1^2 d2^2 107 | dr = dr22 - dr12 // d1^2 d2^2 108 | 109 | det = dlll + dr 110 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LLLEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_LPI(p3:l3x;4;1024;1.221613955826318e-14;12.00000000000002;l3y;4;1024;1.221613955826318e-14;12.00000000000002;l3z;4;1024;1.221613955826318e-14;12.00000000000002;d3;3;192;4.886390771174922e-015;6.000000000000006) 4 | 5 | pdx pdy pdz 6 | pex pey pez 7 | 8 | pexd = pex * d1 9 | peyd = pey * d1 10 | pezd = pez * d1 11 | aex = l1x - pexd 12 | aey = l1y - peyd 13 | aez = l1z - pezd // d1 14 | 15 | pexd2 = pex * d2 16 | peyd2 = pey * d2 17 | pezd2 = pez * d2 18 | bex = l2x - pexd2 19 | bey = l2y - peyd2 20 | bez = l2z - pezd2 // d2 21 | 22 | pexd3 = pex * d3 23 | peyd3 = pey * d3 24 | pezd3 = pez * d3 25 | cex = l3x - pexd3 26 | cey = l3y - peyd3 27 | cez = l3z - pezd3 // d3 28 | 29 | dex = pdx - pex 30 | dey = pdy - pey 31 | dez = pdz - pez // 32 | 33 | aexbey = aex * bey 34 | bexaey = bex * aey 35 | ab = aexbey - bexaey // d1d2 36 | bexcey = bex * cey 37 | cexbey = cex * bey 38 | bc = bexcey - cexbey // d2d3 39 | cexdey = cex * dey 40 | dexcey = dex * cey 41 | cd = cexdey - dexcey // d3 42 | dexaey = dex * aey 43 | aexdey = aex * dey 44 | da = dexaey - aexdey // d1 45 | aexcey = aex * cey 46 | cexaey = cex * aey 47 | ac = aexcey - cexaey // d1d3 48 | bexdey = bex * dey 49 | dexbey = dex * bey 50 | bd = bexdey - dexbey // d2 51 | 52 | abc1 = aez * bc 53 | abc2 = bez * ac 54 | abc3 = cez * ab 55 | abc4 = abc1 + abc3 56 | abc = abc4 - abc2 // d1d2d3 57 | 58 | bcd1 = bez * cd 59 | bcd2 = cez * bd 60 | bcd3 = dez * bc 61 | bcd4 = bcd1 + bcd3 62 | bcd = bcd4 - bcd2 // d2d3 63 | 64 | cda1 = cez * da 65 | cda2 = dez * ac 66 | cda3 = aez * cd 67 | cda4 = cda1 + cda3 68 | cda = cda4 + cda2 // d1d3 69 | 70 | dab1 = dez * ab 71 | dab2 = aez * bd 72 | dab3 = bez * da 73 | dab4 = dab1 + dab3 74 | dab = dab4 + dab2 // d1d2 75 | 76 | al1 = aex * aex 77 | al2 = aey * aey 78 | al3 = aez * aez 79 | al4 = al1 + al2 80 | alift = al4 + al3 // d1^2 81 | 82 | bl1 = bex * bex 83 | bl2 = bey * bey 84 | bl3 = bez * bez 85 | bl4 = bl1 + bl2 86 | blift = bl4 + bl3 // d2^2 87 | 88 | cl1 = cex * cex 89 | cl2 = cey * cey 90 | cl3 = cez * cez 91 | cl4 = cl1 + cl2 92 | clift = cl4 + cl3 // d3^2 93 | 94 | dl1 = dex * dex 95 | dl2 = dey * dey 96 | dl3 = dez * dez 97 | dl4 = dl1 + dl2 98 | dlift = dl4 + dl3 // 99 | 100 | ds1 = dlift * abc // d1 d2 d3 101 | ds1n = ds1 * d3 // d1 d2 d3^2 102 | ds2 = clift * dab // d1 d2 d3^2 103 | dl = ds2 - ds1n // d1 d2 d3^2 104 | dlm = dl * d1 105 | dln = dlm * d2 // d1^2 d2^2 d3^2 106 | 107 | dr1 = blift * cda // d1 d2^2 d3 108 | dr1n = dr1 * d1 // d1^2 d2^2 d3 109 | dr2 = alift * bcd // d1^2 d2 d3 110 | dr2n = dr2 * d2 // d1^2 d2^2 d3 111 | dr = dr2n - dr1n // d1^2 d2^2 d3 112 | drn = dr * d3 // d1^2 d2^2 d3^2 113 | 114 | det = dln + drn 115 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LLLLE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_LPI(p3:l3x;4;1024;1.221613955826318e-14;12.00000000000002;l3y;4;1024;1.221613955826318e-14;12.00000000000002;l3z;4;1024;1.221613955826318e-14;12.00000000000002;d3;3;192;4.886390771174922e-015;6.000000000000006) 4 | implicitPoint3D_LPI(p4:l4x;4;1024;1.221613955826318e-14;12.00000000000002;l4y;4;1024;1.221613955826318e-14;12.00000000000002;l4z;4;1024;1.221613955826318e-14;12.00000000000002;d4;3;192;4.886390771174922e-015;6.000000000000006) 5 | 6 | pex pey pez 7 | 8 | pexd = pex * d1 9 | peyd = pey * d1 10 | pezd = pez * d1 11 | aex = l1x - pexd 12 | aey = l1y - peyd 13 | aez = l1z - pezd 14 | 15 | pexd2 = pex * d2 16 | peyd2 = pey * d2 17 | pezd2 = pez * d2 18 | bex = l2x - pexd2 19 | bey = l2y - peyd2 20 | bez = l2z - pezd2 21 | 22 | pexd3 = pex * d3 23 | peyd3 = pey * d3 24 | pezd3 = pez * d3 25 | cex = l3x - pexd3 26 | cey = l3y - peyd3 27 | cez = l3z - pezd3 28 | 29 | pexd4 = pex * d4 30 | peyd4 = pey * d4 31 | pezd4 = pez * d4 32 | dex = l4x - pexd4 33 | dey = l4y - peyd4 34 | dez = l4z - pezd4 35 | 36 | aexbey = aex * bey 37 | bexaey = bex * aey 38 | ab = aexbey - bexaey // d1 d2 d3^2 d4^2 39 | bexcey = bex * cey 40 | cexbey = cex * bey 41 | bc = bexcey - cexbey // d1^2 d2 d3 d4^2 42 | cexdey = cex * dey 43 | dexcey = dex * cey 44 | cd = cexdey - dexcey // d1^2 d2^2 d3 d4 45 | dexaey = dex * aey 46 | aexdey = aex * dey 47 | da = dexaey - aexdey // d1 d2^2 d3^2 d4 48 | aexcey = aex * cey 49 | cexaey = cex * aey 50 | ac = aexcey - cexaey // d1 d2^2 d3 d4^2 51 | bexdey = bex * dey 52 | dexbey = dex * bey 53 | bd = bexdey - dexbey // d1^2 d2 d3^2 d4 54 | 55 | abc1 = aez * bc 56 | abc2 = bez * ac 57 | abc3 = cez * ab 58 | abc4 = abc1 + abc3 59 | abc = abc4 - abc2 // d1^2 d2^2 d3^2 d4^3 60 | 61 | bcd1 = bez * cd 62 | bcd2 = cez * bd 63 | bcd3 = dez * bc 64 | bcd4 = bcd1 + bcd3 65 | bcd = bcd4 - bcd2 // d1^3 d2^2 d3^2 d4^2 66 | 67 | cda1 = cez * da 68 | cda2 = dez * ac 69 | cda3 = aez * cd 70 | cda4 = cda1 + cda3 71 | cda = cda4 + cda2 // d1^2 d2^3 d3^2 d4^2 72 | 73 | dab1 = dez * ab 74 | dab2 = aez * bd 75 | dab3 = bez * da 76 | dab4 = dab1 + dab3 77 | dab = dab4 + dab2 // d1^2 d2^2 d3^3 d4^2 78 | 79 | al1 = aex * aex 80 | al2 = aey * aey 81 | al3 = aez * aez 82 | al4 = al1 + al2 83 | alift = al4 + al3 // d2^2 d3^2 d4^2 84 | 85 | bl1 = bex * bex 86 | bl2 = bey * bey 87 | bl3 = bez * bez 88 | bl4 = bl1 + bl2 89 | blift = bl4 + bl3 // d1^2 d3^2 d4^2 90 | 91 | cl1 = cex * cex 92 | cl2 = cey * cey 93 | cl3 = cez * cez 94 | cl4 = cl1 + cl2 95 | clift = cl4 + cl3 // d1^2 d2^2 d4^2 96 | 97 | dl1 = dex * dex 98 | dl2 = dey * dey 99 | dl3 = dez * dez 100 | dl4 = dl1 + dl2 101 | dlift = dl4 + dl3 // d1^2 d2^2 d3^2 102 | 103 | ds1 = dlift * abc // d1^4 d2^4 d3^4 d4^3 104 | ds12 = ds1 * d3 // d1^4 d2^4 d3^3 d4^3 105 | ds2 = clift * dab // d1^4 d2^4 d3^3 d4^4 106 | ds22 = ds2 * d4 // d1^4 d2^4 d3^3 d4^3 107 | dl = ds22 - ds12 // d1^4 d2^4 d3^3 d4^3 108 | dlx1 = dl * d1 109 | dlx2 = dlx1 * d2 110 | 111 | dr1 = blift * cda // d1^4 d2^3 d3^4 d4^4 112 | dr12 = dr1 * d1 // d1^3 d2^3 d3^4 d4^4 113 | dr2 = alift * bcd // d1^3 d2^4 d3^4 d4^4 114 | dr22 = dr2 * d2 // d1^3 d2^3 d3^4 d4^4 115 | dr = dr22 - dr12 // d1^3 d2^3 d3^4 d4^4 116 | drx1 = dr * d3 117 | drx2 = drx1 * d4 118 | 119 | det = dlx2 + drx2 120 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LLLLL.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_LPI(p3:l3x;4;1024;1.221613955826318e-14;12.00000000000002;l3y;4;1024;1.221613955826318e-14;12.00000000000002;l3z;4;1024;1.221613955826318e-14;12.00000000000002;d3;3;192;4.886390771174922e-015;6.000000000000006) 4 | implicitPoint3D_LPI(p4:l4x;4;1024;1.221613955826318e-14;12.00000000000002;l4y;4;1024;1.221613955826318e-14;12.00000000000002;l4z;4;1024;1.221613955826318e-14;12.00000000000002;d4;3;192;4.886390771174922e-015;6.000000000000006) 5 | implicitPoint3D_LPI(p5:l5x;4;1024;1.221613955826318e-14;12.00000000000002;l5y;4;1024;1.221613955826318e-14;12.00000000000002;l5z;4;1024;1.221613955826318e-14;12.00000000000002;d5;3;192;4.886390771174922e-015;6.000000000000006) 6 | 7 | pexd = l5x * d1 8 | peyd = l5y * d1 9 | pezd = l5z * d1 10 | ll1x = l1x * d5 11 | ll1y = l1y * d5 12 | ll1z = l1z * d5 13 | aex = ll1x - pexd 14 | aey = ll1y - peyd 15 | aez = ll1z - pezd // d1d5 16 | 17 | pexd2 = l5x * d2 18 | peyd2 = l5y * d2 19 | pezd2 = l5z * d2 20 | ll2x = l2x * d5 21 | ll2y = l2y * d5 22 | ll2z = l2z * d5 23 | bex = ll2x - pexd2 24 | bey = ll2y - peyd2 25 | bez = ll2z - pezd2 // d2d5 26 | 27 | pexd3 = l5x * d3 28 | peyd3 = l5y * d3 29 | pezd3 = l5z * d3 30 | ll3x = l3x * d5 31 | ll3y = l3y * d5 32 | ll3z = l3z * d5 33 | cex = ll3x - pexd3 34 | cey = ll3y - peyd3 35 | cez = ll3z - pezd3 // d3d5 36 | 37 | pexd4 = l5x * d4 38 | peyd4 = l5y * d4 39 | pezd4 = l5z * d4 40 | ll4x = l4x * d5 41 | ll4y = l4y * d5 42 | ll4z = l4z * d5 43 | dex = ll4x - pexd4 44 | dey = ll4y - peyd4 45 | dez = ll4z - pezd4 // d4d5 46 | 47 | aexbey = aex * bey 48 | bexaey = bex * aey 49 | ab = aexbey - bexaey // d1 d2 d5^2 50 | bexcey = bex * cey 51 | cexbey = cex * bey 52 | bc = bexcey - cexbey // d2 d3 d5^2 53 | cexdey = cex * dey 54 | dexcey = dex * cey 55 | cd = cexdey - dexcey // d3 d4 d5^2 56 | dexaey = dex * aey 57 | aexdey = aex * dey 58 | da = dexaey - aexdey // d1 d4 d5^2 59 | aexcey = aex * cey 60 | cexaey = cex * aey 61 | ac = aexcey - cexaey // d1 d3 d5^2 62 | bexdey = bex * dey 63 | dexbey = dex * bey 64 | bd = bexdey - dexbey // d2 d4 d5^2 65 | 66 | abc1 = aez * bc 67 | abc2 = bez * ac 68 | abc3 = cez * ab 69 | abc4 = abc1 + abc3 70 | abc = abc4 - abc2 // d1 d2 d3 d5^3 71 | 72 | bcd1 = bez * cd 73 | bcd2 = cez * bd 74 | bcd3 = dez * bc 75 | bcd4 = bcd1 + bcd3 76 | bcd = bcd4 - bcd2 // d2 d3 d4 d5^3 77 | 78 | cda1 = cez * da 79 | cda2 = dez * ac 80 | cda3 = aez * cd 81 | cda4 = cda1 + cda3 82 | cda = cda4 + cda2 // d1 d3 d4 d5^3 83 | 84 | dab1 = dez * ab 85 | dab2 = aez * bd 86 | dab3 = bez * da 87 | dab4 = dab1 + dab3 88 | dab = dab4 + dab2 // d1 d2 d4 d5^3 89 | 90 | al1 = aex * aex 91 | al2 = aey * aey 92 | al3 = aez * aez 93 | al4 = al1 + al2 94 | alift = al4 + al3 // d1^2 d5^2 95 | 96 | bl1 = bex * bex 97 | bl2 = bey * bey 98 | bl3 = bez * bez 99 | bl4 = bl1 + bl2 100 | blift = bl4 + bl3 // d2^2 d5^2 101 | 102 | cl1 = cex * cex 103 | cl2 = cey * cey 104 | cl3 = cez * cez 105 | cl4 = cl1 + cl2 106 | clift = cl4 + cl3 // d3^2 d5^2 107 | 108 | dl1 = dex * dex 109 | dl2 = dey * dey 110 | dl3 = dez * dez 111 | dl4 = dl1 + dl2 112 | dlift = dl4 + dl3 // d4^2 d5^2 113 | 114 | ds1 = dlift * abc // d1 d2 d3 d4^2 d5^5 115 | ds1n = ds1 * d3 // d1 d2 d3^2 d4^2 d5^5 116 | ds2 = clift * dab // d1 d2 d3^2 d4 d5^5 117 | ds2n = ds2 * d4 // d1 d2 d3^2 d4^2 d5^5 118 | dl = ds2n - ds1n // d1 d2 d3^2 d4^2 d5^5 119 | dla = dl * d1 120 | dlb = dla * d2 121 | 122 | dr1 = blift * cda // d1 d2^2 d3 d4 d5^5 123 | dr1n = dr1 * d1 124 | dr2 = alift * bcd // d1^2 d2 d3 d4 d5^5 125 | dr2n = dr2 * d2 126 | dr = dr2n - dr1n // d1^2 d2^2 d3 d4 d5^5 127 | dra = dr * d3 128 | drb = dra * d4 129 | 130 | det = dlb + drb 131 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LLLLT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_LPI(p3:l3x;4;1024;1.221613955826318e-14;12.00000000000002;l3y;4;1024;1.221613955826318e-14;12.00000000000002;l3z;4;1024;1.221613955826318e-14;12.00000000000002;d3;3;192;4.886390771174922e-015;6.000000000000006) 4 | implicitPoint3D_LPI(p4:l4x;4;1024;1.221613955826318e-14;12.00000000000002;l4y;4;1024;1.221613955826318e-14;12.00000000000002;l4z;4;1024;1.221613955826318e-14;12.00000000000002;d4;3;192;4.886390771174922e-015;6.000000000000006) 5 | implicitPoint3D_TPI(p5:l5x;7;1024;2.931951556539587e-013;144.0000000000005;l5y;7;1024;2.931951556539587e-013;144.0000000000005;l5z;7;1024;2.931951556539587e-013;144.0000000000005;d5;6;1024;8.706837334449009e-014;48.00000000000014) 6 | 7 | pexd = l5x * d1 8 | peyd = l5y * d1 9 | pezd = l5z * d1 10 | ll1x = l1x * d5 11 | ll1y = l1y * d5 12 | ll1z = l1z * d5 13 | aex = ll1x - pexd 14 | aey = ll1y - peyd 15 | aez = ll1z - pezd // d1d5 16 | 17 | pexd2 = l5x * d2 18 | peyd2 = l5y * d2 19 | pezd2 = l5z * d2 20 | ll2x = l2x * d5 21 | ll2y = l2y * d5 22 | ll2z = l2z * d5 23 | bex = ll2x - pexd2 24 | bey = ll2y - peyd2 25 | bez = ll2z - pezd2 // d2d5 26 | 27 | pexd3 = l5x * d3 28 | peyd3 = l5y * d3 29 | pezd3 = l5z * d3 30 | ll3x = l3x * d5 31 | ll3y = l3y * d5 32 | ll3z = l3z * d5 33 | cex = ll3x - pexd3 34 | cey = ll3y - peyd3 35 | cez = ll3z - pezd3 // d3d5 36 | 37 | pexd4 = l5x * d4 38 | peyd4 = l5y * d4 39 | pezd4 = l5z * d4 40 | ll4x = l4x * d5 41 | ll4y = l4y * d5 42 | ll4z = l4z * d5 43 | dex = ll4x - pexd4 44 | dey = ll4y - peyd4 45 | dez = ll4z - pezd4 // d4d5 46 | 47 | aexbey = aex * bey 48 | bexaey = bex * aey 49 | ab = aexbey - bexaey // d1 d2 d5^2 50 | bexcey = bex * cey 51 | cexbey = cex * bey 52 | bc = bexcey - cexbey // d2 d3 d5^2 53 | cexdey = cex * dey 54 | dexcey = dex * cey 55 | cd = cexdey - dexcey // d3 d4 d5^2 56 | dexaey = dex * aey 57 | aexdey = aex * dey 58 | da = dexaey - aexdey // d1 d4 d5^2 59 | aexcey = aex * cey 60 | cexaey = cex * aey 61 | ac = aexcey - cexaey // d1 d3 d5^2 62 | bexdey = bex * dey 63 | dexbey = dex * bey 64 | bd = bexdey - dexbey // d2 d4 d5^2 65 | 66 | abc1 = aez * bc 67 | abc2 = bez * ac 68 | abc3 = cez * ab 69 | abc4 = abc1 + abc3 70 | abc = abc4 - abc2 // d1 d2 d3 d5^3 71 | 72 | bcd1 = bez * cd 73 | bcd2 = cez * bd 74 | bcd3 = dez * bc 75 | bcd4 = bcd1 + bcd3 76 | bcd = bcd4 - bcd2 // d2 d3 d4 d5^3 77 | 78 | cda1 = cez * da 79 | cda2 = dez * ac 80 | cda3 = aez * cd 81 | cda4 = cda1 + cda3 82 | cda = cda4 + cda2 // d1 d3 d4 d5^3 83 | 84 | dab1 = dez * ab 85 | dab2 = aez * bd 86 | dab3 = bez * da 87 | dab4 = dab1 + dab3 88 | dab = dab4 + dab2 // d1 d2 d4 d5^3 89 | 90 | al1 = aex * aex 91 | al2 = aey * aey 92 | al3 = aez * aez 93 | al4 = al1 + al2 94 | alift = al4 + al3 // d1^2 d5^2 95 | 96 | bl1 = bex * bex 97 | bl2 = bey * bey 98 | bl3 = bez * bez 99 | bl4 = bl1 + bl2 100 | blift = bl4 + bl3 // d2^2 d5^2 101 | 102 | cl1 = cex * cex 103 | cl2 = cey * cey 104 | cl3 = cez * cez 105 | cl4 = cl1 + cl2 106 | clift = cl4 + cl3 // d3^2 d5^2 107 | 108 | dl1 = dex * dex 109 | dl2 = dey * dey 110 | dl3 = dez * dez 111 | dl4 = dl1 + dl2 112 | dlift = dl4 + dl3 // d4^2 d5^2 113 | 114 | ds1 = dlift * abc // d1 d2 d3 d4^2 d5^5 115 | ds1n = ds1 * d3 // d1 d2 d3^2 d4^2 d5^5 116 | ds2 = clift * dab // d1 d2 d3^2 d4 d5^5 117 | ds2n = ds2 * d4 // d1 d2 d3^2 d4^2 d5^5 118 | dl = ds2n - ds1n // d1 d2 d3^2 d4^2 d5^5 119 | dla = dl * d1 120 | dlb = dla * d2 121 | 122 | dr1 = blift * cda // d1 d2^2 d3 d4 d5^5 123 | dr1n = dr1 * d1 124 | dr2 = alift * bcd // d1^2 d2 d3 d4 d5^5 125 | dr2n = dr2 * d2 126 | dr = dr2n - dr1n // d1^2 d2^2 d3 d4 d5^5 127 | dra = dr * d3 128 | drb = dra * d4 129 | 130 | det = dlb + drb 131 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LLLTE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_LPI(p3:l3x;4;1024;1.221613955826318e-14;12.00000000000002;l3y;4;1024;1.221613955826318e-14;12.00000000000002;l3z;4;1024;1.221613955826318e-14;12.00000000000002;d3;3;192;4.886390771174922e-015;6.000000000000006) 4 | implicitPoint3D_TPI(p4:l4x;7;1024;2.931951556539587e-013;144.0000000000005;l4y;7;1024;2.931951556539587e-013;144.0000000000005;l4z;7;1024;2.931951556539587e-013;144.0000000000005;d4;6;1024;8.706837334449009e-014;48.00000000000014) 5 | 6 | pex pey pez 7 | 8 | pexd = pex * d1 9 | peyd = pey * d1 10 | pezd = pez * d1 11 | aex = l1x - pexd 12 | aey = l1y - peyd 13 | aez = l1z - pezd 14 | 15 | pexd2 = pex * d2 16 | peyd2 = pey * d2 17 | pezd2 = pez * d2 18 | bex = l2x - pexd2 19 | bey = l2y - peyd2 20 | bez = l2z - pezd2 21 | 22 | pexd3 = pex * d3 23 | peyd3 = pey * d3 24 | pezd3 = pez * d3 25 | cex = l3x - pexd3 26 | cey = l3y - peyd3 27 | cez = l3z - pezd3 28 | 29 | pexd4 = pex * d4 30 | peyd4 = pey * d4 31 | pezd4 = pez * d4 32 | dex = l4x - pexd4 33 | dey = l4y - peyd4 34 | dez = l4z - pezd4 35 | 36 | aexbey = aex * bey 37 | bexaey = bex * aey 38 | ab = aexbey - bexaey // d1 d2 d3^2 d4^2 39 | bexcey = bex * cey 40 | cexbey = cex * bey 41 | bc = bexcey - cexbey // d1^2 d2 d3 d4^2 42 | cexdey = cex * dey 43 | dexcey = dex * cey 44 | cd = cexdey - dexcey // d1^2 d2^2 d3 d4 45 | dexaey = dex * aey 46 | aexdey = aex * dey 47 | da = dexaey - aexdey // d1 d2^2 d3^2 d4 48 | aexcey = aex * cey 49 | cexaey = cex * aey 50 | ac = aexcey - cexaey // d1 d2^2 d3 d4^2 51 | bexdey = bex * dey 52 | dexbey = dex * bey 53 | bd = bexdey - dexbey // d1^2 d2 d3^2 d4 54 | 55 | abc1 = aez * bc 56 | abc2 = bez * ac 57 | abc3 = cez * ab 58 | abc4 = abc1 + abc3 59 | abc = abc4 - abc2 // d1^2 d2^2 d3^2 d4^3 60 | 61 | bcd1 = bez * cd 62 | bcd2 = cez * bd 63 | bcd3 = dez * bc 64 | bcd4 = bcd1 + bcd3 65 | bcd = bcd4 - bcd2 // d1^3 d2^2 d3^2 d4^2 66 | 67 | cda1 = cez * da 68 | cda2 = dez * ac 69 | cda3 = aez * cd 70 | cda4 = cda1 + cda3 71 | cda = cda4 + cda2 // d1^2 d2^3 d3^2 d4^2 72 | 73 | dab1 = dez * ab 74 | dab2 = aez * bd 75 | dab3 = bez * da 76 | dab4 = dab1 + dab3 77 | dab = dab4 + dab2 // d1^2 d2^2 d3^3 d4^2 78 | 79 | al1 = aex * aex 80 | al2 = aey * aey 81 | al3 = aez * aez 82 | al4 = al1 + al2 83 | alift = al4 + al3 // d2^2 d3^2 d4^2 84 | 85 | bl1 = bex * bex 86 | bl2 = bey * bey 87 | bl3 = bez * bez 88 | bl4 = bl1 + bl2 89 | blift = bl4 + bl3 // d1^2 d3^2 d4^2 90 | 91 | cl1 = cex * cex 92 | cl2 = cey * cey 93 | cl3 = cez * cez 94 | cl4 = cl1 + cl2 95 | clift = cl4 + cl3 // d1^2 d2^2 d4^2 96 | 97 | dl1 = dex * dex 98 | dl2 = dey * dey 99 | dl3 = dez * dez 100 | dl4 = dl1 + dl2 101 | dlift = dl4 + dl3 // d1^2 d2^2 d3^2 102 | 103 | ds1 = dlift * abc // d1^4 d2^4 d3^4 d4^3 104 | ds12 = ds1 * d3 // d1^4 d2^4 d3^3 d4^3 105 | ds2 = clift * dab // d1^4 d2^4 d3^3 d4^4 106 | ds22 = ds2 * d4 // d1^4 d2^4 d3^3 d4^3 107 | dl = ds22 - ds12 // d1^4 d2^4 d3^3 d4^3 108 | dlx1 = dl * d1 109 | dlx2 = dlx1 * d2 110 | 111 | dr1 = blift * cda // d1^4 d2^3 d3^4 d4^4 112 | dr12 = dr1 * d1 // d1^3 d2^3 d3^4 d4^4 113 | dr2 = alift * bcd // d1^3 d2^4 d3^4 d4^4 114 | dr22 = dr2 * d2 // d1^3 d2^3 d3^4 d4^4 115 | dr = dr22 - dr12 // d1^3 d2^3 d3^4 d4^4 116 | drx1 = dr * d3 117 | drx2 = drx1 * d4 118 | 119 | det = dlx2 + drx2 120 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LLLTT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_LPI(p3:l3x;4;1024;1.221613955826318e-14;12.00000000000002;l3y;4;1024;1.221613955826318e-14;12.00000000000002;l3z;4;1024;1.221613955826318e-14;12.00000000000002;d3;3;192;4.886390771174922e-015;6.000000000000006) 4 | implicitPoint3D_TPI(p4:l4x;7;1024;2.931951556539587e-013;144.0000000000005;l4y;7;1024;2.931951556539587e-013;144.0000000000005;l4z;7;1024;2.931951556539587e-013;144.0000000000005;d4;6;1024;8.706837334449009e-014;48.00000000000014) 5 | implicitPoint3D_TPI(p5:l5x;7;1024;2.931951556539587e-013;144.0000000000005;l5y;7;1024;2.931951556539587e-013;144.0000000000005;l5z;7;1024;2.931951556539587e-013;144.0000000000005;d5;6;1024;8.706837334449009e-014;48.00000000000014) 6 | 7 | pexd = l5x * d1 8 | peyd = l5y * d1 9 | pezd = l5z * d1 10 | ll1x = l1x * d5 11 | ll1y = l1y * d5 12 | ll1z = l1z * d5 13 | aex = ll1x - pexd 14 | aey = ll1y - peyd 15 | aez = ll1z - pezd // d1d5 16 | 17 | pexd2 = l5x * d2 18 | peyd2 = l5y * d2 19 | pezd2 = l5z * d2 20 | ll2x = l2x * d5 21 | ll2y = l2y * d5 22 | ll2z = l2z * d5 23 | bex = ll2x - pexd2 24 | bey = ll2y - peyd2 25 | bez = ll2z - pezd2 // d2d5 26 | 27 | pexd3 = l5x * d3 28 | peyd3 = l5y * d3 29 | pezd3 = l5z * d3 30 | ll3x = l3x * d5 31 | ll3y = l3y * d5 32 | ll3z = l3z * d5 33 | cex = ll3x - pexd3 34 | cey = ll3y - peyd3 35 | cez = ll3z - pezd3 // d3d5 36 | 37 | pexd4 = l5x * d4 38 | peyd4 = l5y * d4 39 | pezd4 = l5z * d4 40 | ll4x = l4x * d5 41 | ll4y = l4y * d5 42 | ll4z = l4z * d5 43 | dex = ll4x - pexd4 44 | dey = ll4y - peyd4 45 | dez = ll4z - pezd4 // d4d5 46 | 47 | aexbey = aex * bey 48 | bexaey = bex * aey 49 | ab = aexbey - bexaey // d1 d2 d5^2 50 | bexcey = bex * cey 51 | cexbey = cex * bey 52 | bc = bexcey - cexbey // d2 d3 d5^2 53 | cexdey = cex * dey 54 | dexcey = dex * cey 55 | cd = cexdey - dexcey // d3 d4 d5^2 56 | dexaey = dex * aey 57 | aexdey = aex * dey 58 | da = dexaey - aexdey // d1 d4 d5^2 59 | aexcey = aex * cey 60 | cexaey = cex * aey 61 | ac = aexcey - cexaey // d1 d3 d5^2 62 | bexdey = bex * dey 63 | dexbey = dex * bey 64 | bd = bexdey - dexbey // d2 d4 d5^2 65 | 66 | abc1 = aez * bc 67 | abc2 = bez * ac 68 | abc3 = cez * ab 69 | abc4 = abc1 + abc3 70 | abc = abc4 - abc2 // d1 d2 d3 d5^3 71 | 72 | bcd1 = bez * cd 73 | bcd2 = cez * bd 74 | bcd3 = dez * bc 75 | bcd4 = bcd1 + bcd3 76 | bcd = bcd4 - bcd2 // d2 d3 d4 d5^3 77 | 78 | cda1 = cez * da 79 | cda2 = dez * ac 80 | cda3 = aez * cd 81 | cda4 = cda1 + cda3 82 | cda = cda4 + cda2 // d1 d3 d4 d5^3 83 | 84 | dab1 = dez * ab 85 | dab2 = aez * bd 86 | dab3 = bez * da 87 | dab4 = dab1 + dab3 88 | dab = dab4 + dab2 // d1 d2 d4 d5^3 89 | 90 | al1 = aex * aex 91 | al2 = aey * aey 92 | al3 = aez * aez 93 | al4 = al1 + al2 94 | alift = al4 + al3 // d1^2 d5^2 95 | 96 | bl1 = bex * bex 97 | bl2 = bey * bey 98 | bl3 = bez * bez 99 | bl4 = bl1 + bl2 100 | blift = bl4 + bl3 // d2^2 d5^2 101 | 102 | cl1 = cex * cex 103 | cl2 = cey * cey 104 | cl3 = cez * cez 105 | cl4 = cl1 + cl2 106 | clift = cl4 + cl3 // d3^2 d5^2 107 | 108 | dl1 = dex * dex 109 | dl2 = dey * dey 110 | dl3 = dez * dez 111 | dl4 = dl1 + dl2 112 | dlift = dl4 + dl3 // d4^2 d5^2 113 | 114 | ds1 = dlift * abc // d1 d2 d3 d4^2 d5^5 115 | ds1n = ds1 * d3 // d1 d2 d3^2 d4^2 d5^5 116 | ds2 = clift * dab // d1 d2 d3^2 d4 d5^5 117 | ds2n = ds2 * d4 // d1 d2 d3^2 d4^2 d5^5 118 | dl = ds2n - ds1n // d1 d2 d3^2 d4^2 d5^5 119 | dla = dl * d1 120 | dlb = dla * d2 121 | 122 | dr1 = blift * cda // d1 d2^2 d3 d4 d5^5 123 | dr1n = dr1 * d1 124 | dr2 = alift * bcd // d1^2 d2 d3 d4 d5^5 125 | dr2n = dr2 * d2 126 | dr = dr2n - dr1n // d1^2 d2^2 d3 d4 d5^5 127 | dra = dr * d3 128 | drb = dra * d4 129 | 130 | det = dlb + drb 131 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LLTEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | 5 | pdx pdy pdz 6 | pex pey pez 7 | 8 | pexd = pex * d1 9 | peyd = pey * d1 10 | pezd = pez * d1 11 | aex = l1x - pexd 12 | aey = l1y - peyd 13 | aez = l1z - pezd // d1 14 | 15 | pexd2 = pex * d2 16 | peyd2 = pey * d2 17 | pezd2 = pez * d2 18 | bex = l2x - pexd2 19 | bey = l2y - peyd2 20 | bez = l2z - pezd2 // d2 21 | 22 | pexd3 = pex * d3 23 | peyd3 = pey * d3 24 | pezd3 = pez * d3 25 | cex = l3x - pexd3 26 | cey = l3y - peyd3 27 | cez = l3z - pezd3 // d3 28 | 29 | dex = pdx - pex 30 | dey = pdy - pey 31 | dez = pdz - pez // 32 | 33 | aexbey = aex * bey 34 | bexaey = bex * aey 35 | ab = aexbey - bexaey // d1d2 36 | bexcey = bex * cey 37 | cexbey = cex * bey 38 | bc = bexcey - cexbey // d2d3 39 | cexdey = cex * dey 40 | dexcey = dex * cey 41 | cd = cexdey - dexcey // d3 42 | dexaey = dex * aey 43 | aexdey = aex * dey 44 | da = dexaey - aexdey // d1 45 | aexcey = aex * cey 46 | cexaey = cex * aey 47 | ac = aexcey - cexaey // d1d3 48 | bexdey = bex * dey 49 | dexbey = dex * bey 50 | bd = bexdey - dexbey // d2 51 | 52 | abc1 = aez * bc 53 | abc2 = bez * ac 54 | abc3 = cez * ab 55 | abc4 = abc1 + abc3 56 | abc = abc4 - abc2 // d1d2d3 57 | 58 | bcd1 = bez * cd 59 | bcd2 = cez * bd 60 | bcd3 = dez * bc 61 | bcd4 = bcd1 + bcd3 62 | bcd = bcd4 - bcd2 // d2d3 63 | 64 | cda1 = cez * da 65 | cda2 = dez * ac 66 | cda3 = aez * cd 67 | cda4 = cda1 + cda3 68 | cda = cda4 + cda2 // d1d3 69 | 70 | dab1 = dez * ab 71 | dab2 = aez * bd 72 | dab3 = bez * da 73 | dab4 = dab1 + dab3 74 | dab = dab4 + dab2 // d1d2 75 | 76 | al1 = aex * aex 77 | al2 = aey * aey 78 | al3 = aez * aez 79 | al4 = al1 + al2 80 | alift = al4 + al3 // d1^2 81 | 82 | bl1 = bex * bex 83 | bl2 = bey * bey 84 | bl3 = bez * bez 85 | bl4 = bl1 + bl2 86 | blift = bl4 + bl3 // d2^2 87 | 88 | cl1 = cex * cex 89 | cl2 = cey * cey 90 | cl3 = cez * cez 91 | cl4 = cl1 + cl2 92 | clift = cl4 + cl3 // d3^2 93 | 94 | dl1 = dex * dex 95 | dl2 = dey * dey 96 | dl3 = dez * dez 97 | dl4 = dl1 + dl2 98 | dlift = dl4 + dl3 // 99 | 100 | ds1 = dlift * abc // d1 d2 d3 101 | ds1n = ds1 * d3 // d1 d2 d3^2 102 | ds2 = clift * dab // d1 d2 d3^2 103 | dl = ds2 - ds1n // d1 d2 d3^2 104 | dlm = dl * d1 105 | dln = dlm * d2 // d1^2 d2^2 d3^2 106 | 107 | dr1 = blift * cda // d1 d2^2 d3 108 | dr1n = dr1 * d1 // d1^2 d2^2 d3 109 | dr2 = alift * bcd // d1^2 d2 d3 110 | dr2n = dr2 * d2 // d1^2 d2^2 d3 111 | dr = dr2n - dr1n // d1^2 d2^2 d3 112 | drn = dr * d3 // d1^2 d2^2 d3^2 113 | 114 | det = dln + drn 115 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LLTTE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | implicitPoint3D_TPI(p4:l4x;7;1024;2.931951556539587e-013;144.0000000000005;l4y;7;1024;2.931951556539587e-013;144.0000000000005;l4z;7;1024;2.931951556539587e-013;144.0000000000005;d4;6;1024;8.706837334449009e-014;48.00000000000014) 5 | 6 | pex pey pez 7 | 8 | pexd = pex * d1 9 | peyd = pey * d1 10 | pezd = pez * d1 11 | aex = l1x - pexd 12 | aey = l1y - peyd 13 | aez = l1z - pezd 14 | 15 | pexd2 = pex * d2 16 | peyd2 = pey * d2 17 | pezd2 = pez * d2 18 | bex = l2x - pexd2 19 | bey = l2y - peyd2 20 | bez = l2z - pezd2 21 | 22 | pexd3 = pex * d3 23 | peyd3 = pey * d3 24 | pezd3 = pez * d3 25 | cex = l3x - pexd3 26 | cey = l3y - peyd3 27 | cez = l3z - pezd3 28 | 29 | pexd4 = pex * d4 30 | peyd4 = pey * d4 31 | pezd4 = pez * d4 32 | dex = l4x - pexd4 33 | dey = l4y - peyd4 34 | dez = l4z - pezd4 35 | 36 | aexbey = aex * bey 37 | bexaey = bex * aey 38 | ab = aexbey - bexaey // d1 d2 d3^2 d4^2 39 | bexcey = bex * cey 40 | cexbey = cex * bey 41 | bc = bexcey - cexbey // d1^2 d2 d3 d4^2 42 | cexdey = cex * dey 43 | dexcey = dex * cey 44 | cd = cexdey - dexcey // d1^2 d2^2 d3 d4 45 | dexaey = dex * aey 46 | aexdey = aex * dey 47 | da = dexaey - aexdey // d1 d2^2 d3^2 d4 48 | aexcey = aex * cey 49 | cexaey = cex * aey 50 | ac = aexcey - cexaey // d1 d2^2 d3 d4^2 51 | bexdey = bex * dey 52 | dexbey = dex * bey 53 | bd = bexdey - dexbey // d1^2 d2 d3^2 d4 54 | 55 | abc1 = aez * bc 56 | abc2 = bez * ac 57 | abc3 = cez * ab 58 | abc4 = abc1 + abc3 59 | abc = abc4 - abc2 // d1^2 d2^2 d3^2 d4^3 60 | 61 | bcd1 = bez * cd 62 | bcd2 = cez * bd 63 | bcd3 = dez * bc 64 | bcd4 = bcd1 + bcd3 65 | bcd = bcd4 - bcd2 // d1^3 d2^2 d3^2 d4^2 66 | 67 | cda1 = cez * da 68 | cda2 = dez * ac 69 | cda3 = aez * cd 70 | cda4 = cda1 + cda3 71 | cda = cda4 + cda2 // d1^2 d2^3 d3^2 d4^2 72 | 73 | dab1 = dez * ab 74 | dab2 = aez * bd 75 | dab3 = bez * da 76 | dab4 = dab1 + dab3 77 | dab = dab4 + dab2 // d1^2 d2^2 d3^3 d4^2 78 | 79 | al1 = aex * aex 80 | al2 = aey * aey 81 | al3 = aez * aez 82 | al4 = al1 + al2 83 | alift = al4 + al3 // d2^2 d3^2 d4^2 84 | 85 | bl1 = bex * bex 86 | bl2 = bey * bey 87 | bl3 = bez * bez 88 | bl4 = bl1 + bl2 89 | blift = bl4 + bl3 // d1^2 d3^2 d4^2 90 | 91 | cl1 = cex * cex 92 | cl2 = cey * cey 93 | cl3 = cez * cez 94 | cl4 = cl1 + cl2 95 | clift = cl4 + cl3 // d1^2 d2^2 d4^2 96 | 97 | dl1 = dex * dex 98 | dl2 = dey * dey 99 | dl3 = dez * dez 100 | dl4 = dl1 + dl2 101 | dlift = dl4 + dl3 // d1^2 d2^2 d3^2 102 | 103 | ds1 = dlift * abc // d1^4 d2^4 d3^4 d4^3 104 | ds12 = ds1 * d3 // d1^4 d2^4 d3^3 d4^3 105 | ds2 = clift * dab // d1^4 d2^4 d3^3 d4^4 106 | ds22 = ds2 * d4 // d1^4 d2^4 d3^3 d4^3 107 | dl = ds22 - ds12 // d1^4 d2^4 d3^3 d4^3 108 | dlx1 = dl * d1 109 | dlx2 = dlx1 * d2 110 | 111 | dr1 = blift * cda // d1^4 d2^3 d3^4 d4^4 112 | dr12 = dr1 * d1 // d1^3 d2^3 d3^4 d4^4 113 | dr2 = alift * bcd // d1^3 d2^4 d3^4 d4^4 114 | dr22 = dr2 * d2 // d1^3 d2^3 d3^4 d4^4 115 | dr = dr22 - dr12 // d1^3 d2^3 d3^4 d4^4 116 | drx1 = dr * d3 117 | drx2 = drx1 * d4 118 | 119 | det = dlx2 + drx2 120 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LLTTT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | implicitPoint3D_TPI(p4:l4x;7;1024;2.931951556539587e-013;144.0000000000005;l4y;7;1024;2.931951556539587e-013;144.0000000000005;l4z;7;1024;2.931951556539587e-013;144.0000000000005;d4;6;1024;8.706837334449009e-014;48.00000000000014) 5 | implicitPoint3D_TPI(p5:l5x;7;1024;2.931951556539587e-013;144.0000000000005;l5y;7;1024;2.931951556539587e-013;144.0000000000005;l5z;7;1024;2.931951556539587e-013;144.0000000000005;d5;6;1024;8.706837334449009e-014;48.00000000000014) 6 | 7 | pexd = l5x * d1 8 | peyd = l5y * d1 9 | pezd = l5z * d1 10 | ll1x = l1x * d5 11 | ll1y = l1y * d5 12 | ll1z = l1z * d5 13 | aex = ll1x - pexd 14 | aey = ll1y - peyd 15 | aez = ll1z - pezd // d1d5 16 | 17 | pexd2 = l5x * d2 18 | peyd2 = l5y * d2 19 | pezd2 = l5z * d2 20 | ll2x = l2x * d5 21 | ll2y = l2y * d5 22 | ll2z = l2z * d5 23 | bex = ll2x - pexd2 24 | bey = ll2y - peyd2 25 | bez = ll2z - pezd2 // d2d5 26 | 27 | pexd3 = l5x * d3 28 | peyd3 = l5y * d3 29 | pezd3 = l5z * d3 30 | ll3x = l3x * d5 31 | ll3y = l3y * d5 32 | ll3z = l3z * d5 33 | cex = ll3x - pexd3 34 | cey = ll3y - peyd3 35 | cez = ll3z - pezd3 // d3d5 36 | 37 | pexd4 = l5x * d4 38 | peyd4 = l5y * d4 39 | pezd4 = l5z * d4 40 | ll4x = l4x * d5 41 | ll4y = l4y * d5 42 | ll4z = l4z * d5 43 | dex = ll4x - pexd4 44 | dey = ll4y - peyd4 45 | dez = ll4z - pezd4 // d4d5 46 | 47 | aexbey = aex * bey 48 | bexaey = bex * aey 49 | ab = aexbey - bexaey // d1 d2 d5^2 50 | bexcey = bex * cey 51 | cexbey = cex * bey 52 | bc = bexcey - cexbey // d2 d3 d5^2 53 | cexdey = cex * dey 54 | dexcey = dex * cey 55 | cd = cexdey - dexcey // d3 d4 d5^2 56 | dexaey = dex * aey 57 | aexdey = aex * dey 58 | da = dexaey - aexdey // d1 d4 d5^2 59 | aexcey = aex * cey 60 | cexaey = cex * aey 61 | ac = aexcey - cexaey // d1 d3 d5^2 62 | bexdey = bex * dey 63 | dexbey = dex * bey 64 | bd = bexdey - dexbey // d2 d4 d5^2 65 | 66 | abc1 = aez * bc 67 | abc2 = bez * ac 68 | abc3 = cez * ab 69 | abc4 = abc1 + abc3 70 | abc = abc4 - abc2 // d1 d2 d3 d5^3 71 | 72 | bcd1 = bez * cd 73 | bcd2 = cez * bd 74 | bcd3 = dez * bc 75 | bcd4 = bcd1 + bcd3 76 | bcd = bcd4 - bcd2 // d2 d3 d4 d5^3 77 | 78 | cda1 = cez * da 79 | cda2 = dez * ac 80 | cda3 = aez * cd 81 | cda4 = cda1 + cda3 82 | cda = cda4 + cda2 // d1 d3 d4 d5^3 83 | 84 | dab1 = dez * ab 85 | dab2 = aez * bd 86 | dab3 = bez * da 87 | dab4 = dab1 + dab3 88 | dab = dab4 + dab2 // d1 d2 d4 d5^3 89 | 90 | al1 = aex * aex 91 | al2 = aey * aey 92 | al3 = aez * aez 93 | al4 = al1 + al2 94 | alift = al4 + al3 // d1^2 d5^2 95 | 96 | bl1 = bex * bex 97 | bl2 = bey * bey 98 | bl3 = bez * bez 99 | bl4 = bl1 + bl2 100 | blift = bl4 + bl3 // d2^2 d5^2 101 | 102 | cl1 = cex * cex 103 | cl2 = cey * cey 104 | cl3 = cez * cez 105 | cl4 = cl1 + cl2 106 | clift = cl4 + cl3 // d3^2 d5^2 107 | 108 | dl1 = dex * dex 109 | dl2 = dey * dey 110 | dl3 = dez * dez 111 | dl4 = dl1 + dl2 112 | dlift = dl4 + dl3 // d4^2 d5^2 113 | 114 | ds1 = dlift * abc // d1 d2 d3 d4^2 d5^5 115 | ds2 = clift * dab // d1 d3^2 d2 d4 d5^5 116 | ds12 = ds1 * d3 117 | ds22 = ds2 * d4 118 | dl = ds22 - ds12 // d1 d3^2 d2 d4^2 d5^5 119 | 120 | dr1 = blift * cda // d1 d2^2 d3 d4 d5^5 121 | dr2 = alift * bcd // d1^2 d2 d3 d4 d5^5 122 | dr12 = dr1 * d1 123 | dr22 = dr2 * d2 124 | dr = dr22 - dr12 // d1^2 d2^2 d3 d4 d5^5 125 | 126 | dla = dl * d1 127 | dlb = dla * d2 128 | 129 | dra = dr * d3 130 | drb = dra * d4 131 | 132 | det = dlb + drb 133 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LTEEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | 4 | pcx pcy pcz 5 | pdx pdy pdz 6 | pex pey pez 7 | 8 | pexd = pex * d1 9 | peyd = pey * d1 10 | pezd = pez * d1 11 | aex = l1x - pexd 12 | aey = l1y - peyd 13 | aez = l1z - pezd 14 | 15 | pexd2 = pex * d2 16 | peyd2 = pey * d2 17 | pezd2 = pez * d2 18 | bex = l2x - pexd2 19 | bey = l2y - peyd2 20 | bez = l2z - pezd2 21 | 22 | cex = pcx - pex 23 | cey = pcy - pey 24 | cez = pcz - pez 25 | dex = pdx - pex 26 | dey = pdy - pey 27 | dez = pdz - pez 28 | 29 | aexbey = aex * bey 30 | bexaey = bex * aey 31 | ab = aexbey - bexaey // d1d2 32 | bexcey = bex * cey 33 | cexbey = cex * bey 34 | bc = bexcey - cexbey // d2 35 | cexdey = cex * dey 36 | dexcey = dex * cey 37 | cd = cexdey - dexcey // 38 | dexaey = dex * aey 39 | aexdey = aex * dey 40 | da = dexaey - aexdey // d1 41 | aexcey = aex * cey 42 | cexaey = cex * aey 43 | ac = aexcey - cexaey // d1 44 | bexdey = bex * dey 45 | dexbey = dex * bey 46 | bd = bexdey - dexbey // d2 47 | 48 | abc1 = aez * bc 49 | abc2 = bez * ac 50 | abc3 = cez * ab 51 | abc4 = abc1 + abc3 52 | abc = abc4 - abc2 // d1d2 53 | 54 | bcd1 = bez * cd 55 | bcd2 = cez * bd 56 | bcd3 = dez * bc 57 | bcd4 = bcd1 + bcd3 58 | bcd = bcd4 - bcd2 // d2 59 | 60 | cda1 = cez * da 61 | cda2 = dez * ac 62 | cda3 = aez * cd 63 | cda4 = cda1 + cda3 64 | cda = cda4 + cda2 // d1 65 | 66 | dab1 = dez * ab 67 | dab2 = aez * bd 68 | dab3 = bez * da 69 | dab4 = dab1 + dab3 70 | dab = dab4 + dab2 // d1d2 71 | 72 | al1 = aex * aex 73 | al2 = aey * aey 74 | al3 = aez * aez 75 | al4 = al1 + al2 76 | alift = al4 + al3 // d1^2 77 | 78 | bl1 = bex * bex 79 | bl2 = bey * bey 80 | bl3 = bez * bez 81 | bl4 = bl1 + bl2 82 | blift = bl4 + bl3 // d2^2 83 | 84 | cl1 = cex * cex 85 | cl2 = cey * cey 86 | cl3 = cez * cez 87 | cl4 = cl1 + cl2 88 | clift = cl4 + cl3 // 89 | 90 | dl1 = dex * dex 91 | dl2 = dey * dey 92 | dl3 = dez * dez 93 | dl4 = dl1 + dl2 94 | dlift = dl4 + dl3 // 95 | 96 | ds1 = dlift * abc // d1d2 97 | ds2 = clift * dab // d1d2 98 | dl = ds2 - ds1 // d1d2 99 | dll = dl * d1 100 | dlll = dll * d2 101 | 102 | dr1 = blift * cda // d1 d2^2 103 | dr12 = dr1 * d1 // d1^2 d2^2 104 | dr2 = alift * bcd // d1^2 d2 105 | dr22 = dr2 * d2 // d1^2 d2^2 106 | dr = dr22 - dr12 // d1^2 d2^2 107 | 108 | det = dlll + dr 109 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LTTEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | 5 | pdx pdy pdz 6 | pex pey pez 7 | 8 | pexd = pex * d1 9 | peyd = pey * d1 10 | pezd = pez * d1 11 | aex = l1x - pexd 12 | aey = l1y - peyd 13 | aez = l1z - pezd // d1 14 | 15 | pexd2 = pex * d2 16 | peyd2 = pey * d2 17 | pezd2 = pez * d2 18 | bex = l2x - pexd2 19 | bey = l2y - peyd2 20 | bez = l2z - pezd2 // d2 21 | 22 | pexd3 = pex * d3 23 | peyd3 = pey * d3 24 | pezd3 = pez * d3 25 | cex = l3x - pexd3 26 | cey = l3y - peyd3 27 | cez = l3z - pezd3 // d3 28 | 29 | dex = pdx - pex 30 | dey = pdy - pey 31 | dez = pdz - pez // 32 | 33 | aexbey = aex * bey 34 | bexaey = bex * aey 35 | ab = aexbey - bexaey // d1d2 36 | bexcey = bex * cey 37 | cexbey = cex * bey 38 | bc = bexcey - cexbey // d2d3 39 | cexdey = cex * dey 40 | dexcey = dex * cey 41 | cd = cexdey - dexcey // d3 42 | dexaey = dex * aey 43 | aexdey = aex * dey 44 | da = dexaey - aexdey // d1 45 | aexcey = aex * cey 46 | cexaey = cex * aey 47 | ac = aexcey - cexaey // d1d3 48 | bexdey = bex * dey 49 | dexbey = dex * bey 50 | bd = bexdey - dexbey // d2 51 | 52 | abc1 = aez * bc 53 | abc2 = bez * ac 54 | abc3 = cez * ab 55 | abc4 = abc1 + abc3 56 | abc = abc4 - abc2 // d1d2d3 57 | 58 | bcd1 = bez * cd 59 | bcd2 = cez * bd 60 | bcd3 = dez * bc 61 | bcd4 = bcd1 + bcd3 62 | bcd = bcd4 - bcd2 // d2d3 63 | 64 | cda1 = cez * da 65 | cda2 = dez * ac 66 | cda3 = aez * cd 67 | cda4 = cda1 + cda3 68 | cda = cda4 + cda2 // d1d3 69 | 70 | dab1 = dez * ab 71 | dab2 = aez * bd 72 | dab3 = bez * da 73 | dab4 = dab1 + dab3 74 | dab = dab4 + dab2 // d1d2 75 | 76 | al1 = aex * aex 77 | al2 = aey * aey 78 | al3 = aez * aez 79 | al4 = al1 + al2 80 | alift = al4 + al3 // d1^2 81 | 82 | bl1 = bex * bex 83 | bl2 = bey * bey 84 | bl3 = bez * bez 85 | bl4 = bl1 + bl2 86 | blift = bl4 + bl3 // d2^2 87 | 88 | cl1 = cex * cex 89 | cl2 = cey * cey 90 | cl3 = cez * cez 91 | cl4 = cl1 + cl2 92 | clift = cl4 + cl3 // d3^2 93 | 94 | dl1 = dex * dex 95 | dl2 = dey * dey 96 | dl3 = dez * dez 97 | dl4 = dl1 + dl2 98 | dlift = dl4 + dl3 // 99 | 100 | ds1 = dlift * abc // d1 d2 d3 101 | ds1n = ds1 * d3 // d1 d2 d3^2 102 | ds2 = clift * dab // d1 d2 d3^2 103 | dl = ds2 - ds1n // d1 d2 d3^2 104 | dlm = dl * d1 105 | dln = dlm * d2 // d1^2 d2^2 d3^2 106 | 107 | dr1 = blift * cda // d1 d2^2 d3 108 | dr1n = dr1 * d1 // d1^2 d2^2 d3 109 | dr2 = alift * bcd // d1^2 d2 d3 110 | dr2n = dr2 * d2 // d1^2 d2^2 d3 111 | dr = dr2n - dr1n // d1^2 d2^2 d3 112 | drn = dr * d3 // d1^2 d2^2 d3^2 113 | 114 | det = dln + drn 115 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LTTTE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | implicitPoint3D_TPI(p4:l4x;7;1024;2.931951556539587e-013;144.0000000000005;l4y;7;1024;2.931951556539587e-013;144.0000000000005;l4z;7;1024;2.931951556539587e-013;144.0000000000005;d4;6;1024;8.706837334449009e-014;48.00000000000014) 5 | 6 | pex pey pez 7 | 8 | pexd = pex * d1 9 | peyd = pey * d1 10 | pezd = pez * d1 11 | aex = l1x - pexd 12 | aey = l1y - peyd 13 | aez = l1z - pezd 14 | 15 | pexd2 = pex * d2 16 | peyd2 = pey * d2 17 | pezd2 = pez * d2 18 | bex = l2x - pexd2 19 | bey = l2y - peyd2 20 | bez = l2z - pezd2 21 | 22 | pexd3 = pex * d3 23 | peyd3 = pey * d3 24 | pezd3 = pez * d3 25 | cex = l3x - pexd3 26 | cey = l3y - peyd3 27 | cez = l3z - pezd3 28 | 29 | pexd4 = pex * d4 30 | peyd4 = pey * d4 31 | pezd4 = pez * d4 32 | dex = l4x - pexd4 33 | dey = l4y - peyd4 34 | dez = l4z - pezd4 35 | 36 | aexbey = aex * bey 37 | bexaey = bex * aey 38 | ab = aexbey - bexaey // d1 d2 d3^2 d4^2 39 | bexcey = bex * cey 40 | cexbey = cex * bey 41 | bc = bexcey - cexbey // d1^2 d2 d3 d4^2 42 | cexdey = cex * dey 43 | dexcey = dex * cey 44 | cd = cexdey - dexcey // d1^2 d2^2 d3 d4 45 | dexaey = dex * aey 46 | aexdey = aex * dey 47 | da = dexaey - aexdey // d1 d2^2 d3^2 d4 48 | aexcey = aex * cey 49 | cexaey = cex * aey 50 | ac = aexcey - cexaey // d1 d2^2 d3 d4^2 51 | bexdey = bex * dey 52 | dexbey = dex * bey 53 | bd = bexdey - dexbey // d1^2 d2 d3^2 d4 54 | 55 | abc1 = aez * bc 56 | abc2 = bez * ac 57 | abc3 = cez * ab 58 | abc4 = abc1 + abc3 59 | abc = abc4 - abc2 // d1^2 d2^2 d3^2 d4^3 60 | 61 | bcd1 = bez * cd 62 | bcd2 = cez * bd 63 | bcd3 = dez * bc 64 | bcd4 = bcd1 + bcd3 65 | bcd = bcd4 - bcd2 // d1^3 d2^2 d3^2 d4^2 66 | 67 | cda1 = cez * da 68 | cda2 = dez * ac 69 | cda3 = aez * cd 70 | cda4 = cda1 + cda3 71 | cda = cda4 + cda2 // d1^2 d2^3 d3^2 d4^2 72 | 73 | dab1 = dez * ab 74 | dab2 = aez * bd 75 | dab3 = bez * da 76 | dab4 = dab1 + dab3 77 | dab = dab4 + dab2 // d1^2 d2^2 d3^3 d4^2 78 | 79 | al1 = aex * aex 80 | al2 = aey * aey 81 | al3 = aez * aez 82 | al4 = al1 + al2 83 | alift = al4 + al3 // d2^2 d3^2 d4^2 84 | 85 | bl1 = bex * bex 86 | bl2 = bey * bey 87 | bl3 = bez * bez 88 | bl4 = bl1 + bl2 89 | blift = bl4 + bl3 // d1^2 d3^2 d4^2 90 | 91 | cl1 = cex * cex 92 | cl2 = cey * cey 93 | cl3 = cez * cez 94 | cl4 = cl1 + cl2 95 | clift = cl4 + cl3 // d1^2 d2^2 d4^2 96 | 97 | dl1 = dex * dex 98 | dl2 = dey * dey 99 | dl3 = dez * dez 100 | dl4 = dl1 + dl2 101 | dlift = dl4 + dl3 // d1^2 d2^2 d3^2 102 | 103 | ds1 = dlift * abc // d1^4 d2^4 d3^4 d4^3 104 | ds12 = ds1 * d3 // d1^4 d2^4 d3^3 d4^3 105 | ds2 = clift * dab // d1^4 d2^4 d3^3 d4^4 106 | ds22 = ds2 * d4 // d1^4 d2^4 d3^3 d4^3 107 | dl = ds22 - ds12 // d1^4 d2^4 d3^3 d4^3 108 | dlx1 = dl * d1 109 | dlx2 = dlx1 * d2 110 | 111 | dr1 = blift * cda // d1^4 d2^3 d3^4 d4^4 112 | dr12 = dr1 * d1 // d1^3 d2^3 d3^4 d4^4 113 | dr2 = alift * bcd // d1^3 d2^4 d3^4 d4^4 114 | dr22 = dr2 * d2 // d1^3 d2^3 d3^4 d4^4 115 | dr = dr22 - dr12 // d1^3 d2^3 d3^4 d4^4 116 | drx1 = dr * d3 117 | drx2 = drx1 * d4 118 | 119 | det = dlx2 + drx2 120 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_LTTTT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | implicitPoint3D_TPI(p4:l4x;7;1024;2.931951556539587e-013;144.0000000000005;l4y;7;1024;2.931951556539587e-013;144.0000000000005;l4z;7;1024;2.931951556539587e-013;144.0000000000005;d4;6;1024;8.706837334449009e-014;48.00000000000014) 5 | implicitPoint3D_TPI(p5:l5x;7;1024;2.931951556539587e-013;144.0000000000005;l5y;7;1024;2.931951556539587e-013;144.0000000000005;l5z;7;1024;2.931951556539587e-013;144.0000000000005;d5;6;1024;8.706837334449009e-014;48.00000000000014) 6 | 7 | pexd = l5x * d1 8 | peyd = l5y * d1 9 | pezd = l5z * d1 10 | ll1x = l1x * d5 11 | ll1y = l1y * d5 12 | ll1z = l1z * d5 13 | aex = ll1x - pexd 14 | aey = ll1y - peyd 15 | aez = ll1z - pezd // d1d5 16 | 17 | pexd2 = l5x * d2 18 | peyd2 = l5y * d2 19 | pezd2 = l5z * d2 20 | ll2x = l2x * d5 21 | ll2y = l2y * d5 22 | ll2z = l2z * d5 23 | bex = ll2x - pexd2 24 | bey = ll2y - peyd2 25 | bez = ll2z - pezd2 // d2d5 26 | 27 | pexd3 = l5x * d3 28 | peyd3 = l5y * d3 29 | pezd3 = l5z * d3 30 | ll3x = l3x * d5 31 | ll3y = l3y * d5 32 | ll3z = l3z * d5 33 | cex = ll3x - pexd3 34 | cey = ll3y - peyd3 35 | cez = ll3z - pezd3 // d3d5 36 | 37 | pexd4 = l5x * d4 38 | peyd4 = l5y * d4 39 | pezd4 = l5z * d4 40 | ll4x = l4x * d5 41 | ll4y = l4y * d5 42 | ll4z = l4z * d5 43 | dex = ll4x - pexd4 44 | dey = ll4y - peyd4 45 | dez = ll4z - pezd4 // d4d5 46 | 47 | aexbey = aex * bey 48 | bexaey = bex * aey 49 | ab = aexbey - bexaey // d1 d2 d5^2 50 | bexcey = bex * cey 51 | cexbey = cex * bey 52 | bc = bexcey - cexbey // d2 d3 d5^2 53 | cexdey = cex * dey 54 | dexcey = dex * cey 55 | cd = cexdey - dexcey // d3 d4 d5^2 56 | dexaey = dex * aey 57 | aexdey = aex * dey 58 | da = dexaey - aexdey // d1 d4 d5^2 59 | aexcey = aex * cey 60 | cexaey = cex * aey 61 | ac = aexcey - cexaey // d1 d3 d5^2 62 | bexdey = bex * dey 63 | dexbey = dex * bey 64 | bd = bexdey - dexbey // d2 d4 d5^2 65 | 66 | abc1 = aez * bc 67 | abc2 = bez * ac 68 | abc3 = cez * ab 69 | abc4 = abc1 + abc3 70 | abc = abc4 - abc2 // d1 d2 d3 d5^3 71 | 72 | bcd1 = bez * cd 73 | bcd2 = cez * bd 74 | bcd3 = dez * bc 75 | bcd4 = bcd1 + bcd3 76 | bcd = bcd4 - bcd2 // d2 d3 d4 d5^3 77 | 78 | cda1 = cez * da 79 | cda2 = dez * ac 80 | cda3 = aez * cd 81 | cda4 = cda1 + cda3 82 | cda = cda4 + cda2 // d1 d3 d4 d5^3 83 | 84 | dab1 = dez * ab 85 | dab2 = aez * bd 86 | dab3 = bez * da 87 | dab4 = dab1 + dab3 88 | dab = dab4 + dab2 // d1 d2 d4 d5^3 89 | 90 | al1 = aex * aex 91 | al2 = aey * aey 92 | al3 = aez * aez 93 | al4 = al1 + al2 94 | alift = al4 + al3 // d1^2 d5^2 95 | 96 | bl1 = bex * bex 97 | bl2 = bey * bey 98 | bl3 = bez * bez 99 | bl4 = bl1 + bl2 100 | blift = bl4 + bl3 // d2^2 d5^2 101 | 102 | cl1 = cex * cex 103 | cl2 = cey * cey 104 | cl3 = cez * cez 105 | cl4 = cl1 + cl2 106 | clift = cl4 + cl3 // d3^2 d5^2 107 | 108 | dl1 = dex * dex 109 | dl2 = dey * dey 110 | dl3 = dez * dez 111 | dl4 = dl1 + dl2 112 | dlift = dl4 + dl3 // d4^2 d5^2 113 | 114 | ds1 = dlift * abc // d1 d2 d3 d4^2 d5^5 115 | ds1n = ds1 * d3 // d1 d2 d3^2 d4^2 d5^5 116 | ds2 = clift * dab // d1 d2 d3^2 d4 d5^5 117 | ds2n = ds2 * d4 // d1 d2 d3^2 d4^2 d5^5 118 | dl = ds2n - ds1n // d1 d2 d3^2 d4^2 d5^5 119 | dla = dl * d1 120 | dlb = dla * d2 121 | 122 | dr1 = blift * cda // d1 d2^2 d3 d4 d5^5 123 | dr1n = dr1 * d1 124 | dr2 = alift * bcd // d1^2 d2 d3 d4 d5^5 125 | dr2n = dr2 * d2 126 | dr = dr2n - dr1n // d1^2 d2^2 d3 d4 d5^5 127 | dra = dr * d3 128 | drb = dra * d4 129 | 130 | det = dlb + drb 131 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_TEEEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | 3 | pbx pby pbz 4 | pcx pcy pcz 5 | pdx pdy pdz 6 | pex pey pez 7 | 8 | pexd = pex * d1 9 | peyd = pey * d1 10 | pezd = pez * d1 11 | aex = l1x - pexd 12 | aey = l1y - peyd 13 | aez = l1z - pezd 14 | 15 | bex = pbx - pex 16 | bey = pby - pey 17 | bez = pbz - pez 18 | cex = pcx - pex 19 | cey = pcy - pey 20 | cez = pcz - pez 21 | dex = pdx - pex 22 | dey = pdy - pey 23 | dez = pdz - pez 24 | 25 | aexbey = aex * bey 26 | bexaey = bex * aey 27 | ab = aexbey - bexaey 28 | bexcey = bex * cey 29 | cexbey = cex * bey 30 | bc = bexcey - cexbey 31 | cexdey = cex * dey 32 | dexcey = dex * cey 33 | cd = cexdey - dexcey 34 | dexaey = dex * aey 35 | aexdey = aex * dey 36 | da = dexaey - aexdey 37 | aexcey = aex * cey 38 | cexaey = cex * aey 39 | ac = aexcey - cexaey 40 | bexdey = bex * dey 41 | dexbey = dex * bey 42 | bd = bexdey - dexbey 43 | 44 | abc1 = aez * bc 45 | abc2 = bez * ac 46 | abc3 = cez * ab 47 | abc4 = abc1 + abc3 48 | abc = abc4 - abc2 49 | 50 | bcd1 = bez * cd 51 | bcd2 = cez * bd 52 | bcd3 = dez * bc 53 | bcd4 = bcd1 + bcd3 54 | bcd = bcd4 - bcd2 55 | 56 | cda1 = cez * da 57 | cda2 = dez * ac 58 | cda3 = aez * cd 59 | cda4 = cda1 + cda3 60 | cda = cda4 + cda2 61 | 62 | dab1 = dez * ab 63 | dab2 = aez * bd 64 | dab3 = bez * da 65 | dab4 = dab1 + dab3 66 | dab = dab4 + dab2 67 | 68 | al1 = aex * aex 69 | al2 = aey * aey 70 | al3 = aez * aez 71 | al4 = al1 + al2 72 | alift = al4 + al3 73 | 74 | bl1 = bex * bex 75 | bl2 = bey * bey 76 | bl3 = bez * bez 77 | bl4 = bl1 + bl2 78 | blift = bl4 + bl3 79 | 80 | cl1 = cex * cex 81 | cl2 = cey * cey 82 | cl3 = cez * cez 83 | cl4 = cl1 + cl2 84 | clift = cl4 + cl3 85 | 86 | dl1 = dex * dex 87 | dl2 = dey * dey 88 | dl3 = dez * dez 89 | dl4 = dl1 + dl2 90 | dlift = dl4 + dl3 91 | 92 | ds1 = dlift * abc 93 | ds2 = clift * dab 94 | dlp = ds2 - ds1 95 | dl = dlp * d1 96 | 97 | dr1p = blift * cda 98 | dr1 = dr1p * d1 99 | dr2 = alift * bcd 100 | dr = dr2 - dr1 101 | 102 | det = dl + dr 103 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_TTEEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | 4 | pcx pcy pcz 5 | pdx pdy pdz 6 | pex pey pez 7 | 8 | pexd = pex * d1 9 | peyd = pey * d1 10 | pezd = pez * d1 11 | aex = l1x - pexd 12 | aey = l1y - peyd 13 | aez = l1z - pezd 14 | 15 | pexd2 = pex * d2 16 | peyd2 = pey * d2 17 | pezd2 = pez * d2 18 | bex = l2x - pexd2 19 | bey = l2y - peyd2 20 | bez = l2z - pezd2 21 | 22 | cex = pcx - pex 23 | cey = pcy - pey 24 | cez = pcz - pez 25 | dex = pdx - pex 26 | dey = pdy - pey 27 | dez = pdz - pez 28 | 29 | aexbey = aex * bey 30 | bexaey = bex * aey 31 | ab = aexbey - bexaey // d1d2 32 | bexcey = bex * cey 33 | cexbey = cex * bey 34 | bc = bexcey - cexbey // d2 35 | cexdey = cex * dey 36 | dexcey = dex * cey 37 | cd = cexdey - dexcey // 38 | dexaey = dex * aey 39 | aexdey = aex * dey 40 | da = dexaey - aexdey // d1 41 | aexcey = aex * cey 42 | cexaey = cex * aey 43 | ac = aexcey - cexaey // d1 44 | bexdey = bex * dey 45 | dexbey = dex * bey 46 | bd = bexdey - dexbey // d2 47 | 48 | abc1 = aez * bc 49 | abc2 = bez * ac 50 | abc3 = cez * ab 51 | abc4 = abc1 + abc3 52 | abc = abc4 - abc2 // d1d2 53 | 54 | bcd1 = bez * cd 55 | bcd2 = cez * bd 56 | bcd3 = dez * bc 57 | bcd4 = bcd1 + bcd3 58 | bcd = bcd4 - bcd2 // d2 59 | 60 | cda1 = cez * da 61 | cda2 = dez * ac 62 | cda3 = aez * cd 63 | cda4 = cda1 + cda3 64 | cda = cda4 + cda2 // d1 65 | 66 | dab1 = dez * ab 67 | dab2 = aez * bd 68 | dab3 = bez * da 69 | dab4 = dab1 + dab3 70 | dab = dab4 + dab2 // d1d2 71 | 72 | al1 = aex * aex 73 | al2 = aey * aey 74 | al3 = aez * aez 75 | al4 = al1 + al2 76 | alift = al4 + al3 // d1^2 77 | 78 | bl1 = bex * bex 79 | bl2 = bey * bey 80 | bl3 = bez * bez 81 | bl4 = bl1 + bl2 82 | blift = bl4 + bl3 // d2^2 83 | 84 | cl1 = cex * cex 85 | cl2 = cey * cey 86 | cl3 = cez * cez 87 | cl4 = cl1 + cl2 88 | clift = cl4 + cl3 // 89 | 90 | dl1 = dex * dex 91 | dl2 = dey * dey 92 | dl3 = dez * dez 93 | dl4 = dl1 + dl2 94 | dlift = dl4 + dl3 // 95 | 96 | ds1 = dlift * abc // d1d2 97 | ds2 = clift * dab // d1d2 98 | dl = ds2 - ds1 // d1d2 99 | dll = dl * d1 100 | dlll = dll * d2 101 | 102 | dr1 = blift * cda // d1 d2^2 103 | dr12 = dr1 * d1 // d1^2 d2^2 104 | dr2 = alift * bcd // d1^2 d2 105 | dr22 = dr2 * d2 // d1^2 d2^2 106 | dr = dr22 - dr12 // d1^2 d2^2 107 | 108 | det = dlll + dr 109 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_TTTEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | 5 | pdx pdy pdz 6 | pex pey pez 7 | 8 | pexd = pex * d1 9 | peyd = pey * d1 10 | pezd = pez * d1 11 | aex = l1x - pexd 12 | aey = l1y - peyd 13 | aez = l1z - pezd // d1 14 | 15 | pexd2 = pex * d2 16 | peyd2 = pey * d2 17 | pezd2 = pez * d2 18 | bex = l2x - pexd2 19 | bey = l2y - peyd2 20 | bez = l2z - pezd2 // d2 21 | 22 | pexd3 = pex * d3 23 | peyd3 = pey * d3 24 | pezd3 = pez * d3 25 | cex = l3x - pexd3 26 | cey = l3y - peyd3 27 | cez = l3z - pezd3 // d3 28 | 29 | dex = pdx - pex 30 | dey = pdy - pey 31 | dez = pdz - pez // 32 | 33 | aexbey = aex * bey 34 | bexaey = bex * aey 35 | ab = aexbey - bexaey // d1d2 36 | bexcey = bex * cey 37 | cexbey = cex * bey 38 | bc = bexcey - cexbey // d2d3 39 | cexdey = cex * dey 40 | dexcey = dex * cey 41 | cd = cexdey - dexcey // d3 42 | dexaey = dex * aey 43 | aexdey = aex * dey 44 | da = dexaey - aexdey // d1 45 | aexcey = aex * cey 46 | cexaey = cex * aey 47 | ac = aexcey - cexaey // d1d3 48 | bexdey = bex * dey 49 | dexbey = dex * bey 50 | bd = bexdey - dexbey // d2 51 | 52 | abc1 = aez * bc 53 | abc2 = bez * ac 54 | abc3 = cez * ab 55 | abc4 = abc1 + abc3 56 | abc = abc4 - abc2 // d1d2d3 57 | 58 | bcd1 = bez * cd 59 | bcd2 = cez * bd 60 | bcd3 = dez * bc 61 | bcd4 = bcd1 + bcd3 62 | bcd = bcd4 - bcd2 // d2d3 63 | 64 | cda1 = cez * da 65 | cda2 = dez * ac 66 | cda3 = aez * cd 67 | cda4 = cda1 + cda3 68 | cda = cda4 + cda2 // d1d3 69 | 70 | dab1 = dez * ab 71 | dab2 = aez * bd 72 | dab3 = bez * da 73 | dab4 = dab1 + dab3 74 | dab = dab4 + dab2 // d1d2 75 | 76 | al1 = aex * aex 77 | al2 = aey * aey 78 | al3 = aez * aez 79 | al4 = al1 + al2 80 | alift = al4 + al3 // d1^2 81 | 82 | bl1 = bex * bex 83 | bl2 = bey * bey 84 | bl3 = bez * bez 85 | bl4 = bl1 + bl2 86 | blift = bl4 + bl3 // d2^2 87 | 88 | cl1 = cex * cex 89 | cl2 = cey * cey 90 | cl3 = cez * cez 91 | cl4 = cl1 + cl2 92 | clift = cl4 + cl3 // d3^2 93 | 94 | dl1 = dex * dex 95 | dl2 = dey * dey 96 | dl3 = dez * dez 97 | dl4 = dl1 + dl2 98 | dlift = dl4 + dl3 // 99 | 100 | ds1 = dlift * abc // d1 d2 d3 101 | ds1n = ds1 * d3 // d1 d2 d3^2 102 | ds2 = clift * dab // d1 d2 d3^2 103 | dl = ds2 - ds1n // d1 d2 d3^2 104 | dlm = dl * d1 105 | dln = dlm * d2 // d1^2 d2^2 d3^2 106 | 107 | dr1 = blift * cda // d1 d2^2 d3 108 | dr1n = dr1 * d1 // d1^2 d2^2 d3 109 | dr2 = alift * bcd // d1^2 d2 d3 110 | dr2n = dr2 * d2 // d1^2 d2^2 d3 111 | dr = dr2n - dr1n // d1^2 d2^2 d3 112 | drn = dr * d3 // d1^2 d2^2 d3^2 113 | 114 | det = dln + drn 115 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_TTTTE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | implicitPoint3D_TPI(p4:l4x;7;1024;2.931951556539587e-013;144.0000000000005;l4y;7;1024;2.931951556539587e-013;144.0000000000005;l4z;7;1024;2.931951556539587e-013;144.0000000000005;d4;6;1024;8.706837334449009e-014;48.00000000000014) 5 | 6 | pex pey pez 7 | 8 | pexd = pex * d1 9 | peyd = pey * d1 10 | pezd = pez * d1 11 | aex = l1x - pexd 12 | aey = l1y - peyd 13 | aez = l1z - pezd 14 | 15 | pexd2 = pex * d2 16 | peyd2 = pey * d2 17 | pezd2 = pez * d2 18 | bex = l2x - pexd2 19 | bey = l2y - peyd2 20 | bez = l2z - pezd2 21 | 22 | pexd3 = pex * d3 23 | peyd3 = pey * d3 24 | pezd3 = pez * d3 25 | cex = l3x - pexd3 26 | cey = l3y - peyd3 27 | cez = l3z - pezd3 28 | 29 | pexd4 = pex * d4 30 | peyd4 = pey * d4 31 | pezd4 = pez * d4 32 | dex = l4x - pexd4 33 | dey = l4y - peyd4 34 | dez = l4z - pezd4 35 | 36 | aexbey = aex * bey 37 | bexaey = bex * aey 38 | ab = aexbey - bexaey // d1 d2 d3^2 d4^2 39 | bexcey = bex * cey 40 | cexbey = cex * bey 41 | bc = bexcey - cexbey // d1^2 d2 d3 d4^2 42 | cexdey = cex * dey 43 | dexcey = dex * cey 44 | cd = cexdey - dexcey // d1^2 d2^2 d3 d4 45 | dexaey = dex * aey 46 | aexdey = aex * dey 47 | da = dexaey - aexdey // d1 d2^2 d3^2 d4 48 | aexcey = aex * cey 49 | cexaey = cex * aey 50 | ac = aexcey - cexaey // d1 d2^2 d3 d4^2 51 | bexdey = bex * dey 52 | dexbey = dex * bey 53 | bd = bexdey - dexbey // d1^2 d2 d3^2 d4 54 | 55 | abc1 = aez * bc 56 | abc2 = bez * ac 57 | abc3 = cez * ab 58 | abc4 = abc1 + abc3 59 | abc = abc4 - abc2 // d1^2 d2^2 d3^2 d4^3 60 | 61 | bcd1 = bez * cd 62 | bcd2 = cez * bd 63 | bcd3 = dez * bc 64 | bcd4 = bcd1 + bcd3 65 | bcd = bcd4 - bcd2 // d1^3 d2^2 d3^2 d4^2 66 | 67 | cda1 = cez * da 68 | cda2 = dez * ac 69 | cda3 = aez * cd 70 | cda4 = cda1 + cda3 71 | cda = cda4 + cda2 // d1^2 d2^3 d3^2 d4^2 72 | 73 | dab1 = dez * ab 74 | dab2 = aez * bd 75 | dab3 = bez * da 76 | dab4 = dab1 + dab3 77 | dab = dab4 + dab2 // d1^2 d2^2 d3^3 d4^2 78 | 79 | al1 = aex * aex 80 | al2 = aey * aey 81 | al3 = aez * aez 82 | al4 = al1 + al2 83 | alift = al4 + al3 // d2^2 d3^2 d4^2 84 | 85 | bl1 = bex * bex 86 | bl2 = bey * bey 87 | bl3 = bez * bez 88 | bl4 = bl1 + bl2 89 | blift = bl4 + bl3 // d1^2 d3^2 d4^2 90 | 91 | cl1 = cex * cex 92 | cl2 = cey * cey 93 | cl3 = cez * cez 94 | cl4 = cl1 + cl2 95 | clift = cl4 + cl3 // d1^2 d2^2 d4^2 96 | 97 | dl1 = dex * dex 98 | dl2 = dey * dey 99 | dl3 = dez * dez 100 | dl4 = dl1 + dl2 101 | dlift = dl4 + dl3 // d1^2 d2^2 d3^2 102 | 103 | ds1 = dlift * abc // d1^4 d2^4 d3^4 d4^3 104 | ds12 = ds1 * d3 // d1^4 d2^4 d3^3 d4^3 105 | ds2 = clift * dab // d1^4 d2^4 d3^3 d4^4 106 | ds22 = ds2 * d4 // d1^4 d2^4 d3^3 d4^3 107 | dl = ds22 - ds12 // d1^4 d2^4 d3^3 d4^3 108 | dlx1 = dl * d1 109 | dlx2 = dlx1 * d2 110 | 111 | dr1 = blift * cda // d1^4 d2^3 d3^4 d4^4 112 | dr12 = dr1 * d1 // d1^3 d2^3 d3^4 d4^4 113 | dr2 = alift * bcd // d1^3 d2^4 d3^4 d4^4 114 | dr22 = dr2 * d2 // d1^3 d2^3 d3^4 d4^4 115 | dr = dr22 - dr12 // d1^3 d2^3 d3^4 d4^4 116 | drx1 = dr * d3 117 | drx2 = drx1 * d4 118 | 119 | det = dlx2 + drx2 120 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/inSphere_TTTTT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | implicitPoint3D_TPI(p4:l4x;7;1024;2.931951556539587e-013;144.0000000000005;l4y;7;1024;2.931951556539587e-013;144.0000000000005;l4z;7;1024;2.931951556539587e-013;144.0000000000005;d4;6;1024;8.706837334449009e-014;48.00000000000014) 5 | implicitPoint3D_TPI(p5:l5x;7;1024;2.931951556539587e-013;144.0000000000005;l5y;7;1024;2.931951556539587e-013;144.0000000000005;l5z;7;1024;2.931951556539587e-013;144.0000000000005;d5;6;1024;8.706837334449009e-014;48.00000000000014) 6 | 7 | pexd = l5x * d1 8 | peyd = l5y * d1 9 | pezd = l5z * d1 10 | ll1x = l1x * d5 11 | ll1y = l1y * d5 12 | ll1z = l1z * d5 13 | aex = ll1x - pexd 14 | aey = ll1y - peyd 15 | aez = ll1z - pezd // d1d5 16 | 17 | pexd2 = l5x * d2 18 | peyd2 = l5y * d2 19 | pezd2 = l5z * d2 20 | ll2x = l2x * d5 21 | ll2y = l2y * d5 22 | ll2z = l2z * d5 23 | bex = ll2x - pexd2 24 | bey = ll2y - peyd2 25 | bez = ll2z - pezd2 // d2d5 26 | 27 | pexd3 = l5x * d3 28 | peyd3 = l5y * d3 29 | pezd3 = l5z * d3 30 | ll3x = l3x * d5 31 | ll3y = l3y * d5 32 | ll3z = l3z * d5 33 | cex = ll3x - pexd3 34 | cey = ll3y - peyd3 35 | cez = ll3z - pezd3 // d3d5 36 | 37 | pexd4 = l5x * d4 38 | peyd4 = l5y * d4 39 | pezd4 = l5z * d4 40 | ll4x = l4x * d5 41 | ll4y = l4y * d5 42 | ll4z = l4z * d5 43 | dex = ll4x - pexd4 44 | dey = ll4y - peyd4 45 | dez = ll4z - pezd4 // d4d5 46 | 47 | aexbey = aex * bey 48 | bexaey = bex * aey 49 | ab = aexbey - bexaey // d1 d2 d5^2 50 | bexcey = bex * cey 51 | cexbey = cex * bey 52 | bc = bexcey - cexbey // d2 d3 d5^2 53 | cexdey = cex * dey 54 | dexcey = dex * cey 55 | cd = cexdey - dexcey // d3 d4 d5^2 56 | dexaey = dex * aey 57 | aexdey = aex * dey 58 | da = dexaey - aexdey // d1 d4 d5^2 59 | aexcey = aex * cey 60 | cexaey = cex * aey 61 | ac = aexcey - cexaey // d1 d3 d5^2 62 | bexdey = bex * dey 63 | dexbey = dex * bey 64 | bd = bexdey - dexbey // d2 d4 d5^2 65 | 66 | abc1 = aez * bc 67 | abc2 = bez * ac 68 | abc3 = cez * ab 69 | abc4 = abc1 + abc3 70 | abc = abc4 - abc2 // d1 d2 d3 d5^3 71 | 72 | bcd1 = bez * cd 73 | bcd2 = cez * bd 74 | bcd3 = dez * bc 75 | bcd4 = bcd1 + bcd3 76 | bcd = bcd4 - bcd2 // d2 d3 d4 d5^3 77 | 78 | cda1 = cez * da 79 | cda2 = dez * ac 80 | cda3 = aez * cd 81 | cda4 = cda1 + cda3 82 | cda = cda4 + cda2 // d1 d3 d4 d5^3 83 | 84 | dab1 = dez * ab 85 | dab2 = aez * bd 86 | dab3 = bez * da 87 | dab4 = dab1 + dab3 88 | dab = dab4 + dab2 // d1 d2 d4 d5^3 89 | 90 | al1 = aex * aex 91 | al2 = aey * aey 92 | al3 = aez * aez 93 | al4 = al1 + al2 94 | alift = al4 + al3 // d1^2 d5^2 95 | 96 | bl1 = bex * bex 97 | bl2 = bey * bey 98 | bl3 = bez * bez 99 | bl4 = bl1 + bl2 100 | blift = bl4 + bl3 // d2^2 d5^2 101 | 102 | cl1 = cex * cex 103 | cl2 = cey * cey 104 | cl3 = cez * cez 105 | cl4 = cl1 + cl2 106 | clift = cl4 + cl3 // d3^2 d5^2 107 | 108 | dl1 = dex * dex 109 | dl2 = dey * dey 110 | dl3 = dez * dez 111 | dl4 = dl1 + dl2 112 | dlift = dl4 + dl3 // d4^2 d5^2 113 | 114 | ds1 = dlift * abc // d1 d2 d3 d4^2 d5^5 115 | ds1n = ds1 * d3 // d1 d2 d3^2 d4^2 d5^5 116 | ds2 = clift * dab // d1 d2 d3^2 d4 d5^5 117 | ds2n = ds2 * d4 // d1 d2 d3^2 d4^2 d5^5 118 | dl = ds2n - ds1n // d1 d2 d3^2 d4^2 d5^5 119 | dla = dl * d1 120 | dlb = dla * d2 121 | 122 | dr1 = blift * cda // d1 d2^2 d3 d4 d5^5 123 | dr1n = dr1 * d1 124 | dr2 = alift * bcd // d1^2 d2 d3 d4 d5^5 125 | dr2n = dr2 * d2 126 | dr = dr2n - dr1n // d1^2 d2^2 d3 d4 d5^5 127 | dra = dr * d3 128 | drb = dra * d4 129 | 130 | det = dlb + drb 131 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/incircle_indirect_SEEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint2D_SSI(p1:l1x;3;32;2.221313410988302e-015;4.000000000000004;l1y;3;32;2.221313410988302e-015;4.000000000000004;d1;2;16;8.883952601346225e-016;2.000000000000001) 2 | pbx pby pcx pcy pdx pdy 3 | 4 | pdxt = pdx * d1 5 | pdyt = pdy * d1 6 | adx = l1x - pdxt 7 | ady = l1y - pdyt 8 | bdx = pbx - pdx 9 | bdy = pby - pdy 10 | cdx = pcx - pdx 11 | cdy = pcy - pdy 12 | 13 | abdeta = adx * bdy 14 | abdetb = bdx * ady 15 | abdet = abdeta - abdetb 16 | 17 | bcdeta = bdx * cdy 18 | bcdetb = cdx * bdy 19 | bcdet = bcdeta - bcdetb 20 | 21 | cadeta = cdx * ady 22 | cadetb = adx * cdy 23 | cadet = cadeta - cadetb 24 | 25 | alifta = adx * adx 26 | aliftb = ady * ady 27 | alift = alifta + aliftb 28 | 29 | blifta = bdx * bdx 30 | bliftb = bdy * bdy 31 | blift = blifta + bliftb 32 | 33 | clifta = cdx * cdx 34 | cliftb = cdy * cdy 35 | clift = clifta + cliftb 36 | 37 | la = alift * bcdet 38 | lbt = blift * cadet 39 | lb = lbt * d1 40 | lct = clift * abdet 41 | lc = lct * d1 42 | lab = la + lb 43 | 44 | L = lab + lc 45 | 46 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/incircle_indirect_SSEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint2D_SSI(p1:l1x;3;32;2.221313410988302e-015;4.000000000000004;l1y;3;32;2.221313410988302e-015;4.000000000000004;d1;2;16;8.883952601346225e-016;2.000000000000001) 2 | 3 | implicitPoint2D_SSI(p2:l2x;3;32;2.221313410988302e-015;4.000000000000004;l2y;3;32;2.221313410988302e-015;4.000000000000004;d2;2;16;8.883952601346225e-016;2.000000000000001) 4 | 5 | pcx pcy pdx pdy 6 | 7 | pdx1 = pdx * d1 8 | pdy1 = pdy * d1 9 | adx = l1x - pdx1 10 | ady = l1y - pdy1 11 | pdx2 = pdx * d2 12 | pdy2 = pdy * d2 13 | bdx = l2x - pdx2 14 | bdy = l2y - pdy2 15 | cdx = pcx - pdx 16 | cdy = pcy - pdy 17 | 18 | abdeta = adx * bdy 19 | abdetb = bdx * ady 20 | abdet = abdeta - abdetb 21 | 22 | bcdeta = bdx * cdy 23 | bcdetb = cdx * bdy 24 | bcdet = bcdeta - bcdetb 25 | 26 | cadeta = cdx * ady 27 | cadetb = adx * cdy 28 | cadet = cadeta - cadetb 29 | 30 | alifta = adx * adx 31 | aliftb = ady * ady 32 | aliftt = alifta + aliftb 33 | alift = aliftt * d2 34 | 35 | blifta = bdx * bdx 36 | bliftb = bdy * bdy 37 | blift = blifta + bliftb 38 | 39 | clifta = cdx * cdx 40 | cliftb = cdy * cdy 41 | cliftt = clifta + cliftb 42 | clift = cliftt * d2 43 | 44 | la = alift * bcdet 45 | lb = blift * cadet 46 | lc = clift * abdet 47 | lab = lc + lb 48 | lab2 = lab * d1 49 | 50 | L = lab2 + la 51 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/incircle_indirect_SSSE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint2D_SSI(p1:l1x;3;32;2.221313410988302e-015;4.000000000000004;l1y;3;32;2.221313410988302e-015;4.000000000000004;d1;2;16;8.883952601346225e-016;2.000000000000001) 2 | 3 | implicitPoint2D_SSI(p2:l2x;3;32;2.221313410988302e-015;4.000000000000004;l2y;3;32;2.221313410988302e-015;4.000000000000004;d2;2;16;8.883952601346225e-016;2.000000000000001) 4 | 5 | implicitPoint2D_SSI(p3:l3x;3;32;2.221313410988302e-015;4.000000000000004;l3y;3;32;2.221313410988302e-015;4.000000000000004;d3;2;16;8.883952601346225e-016;2.000000000000001) 6 | 7 | pdx pdy 8 | 9 | pdx1 = pdx * d1 10 | pdy1 = pdy * d1 11 | adx = l1x - pdx1 12 | ady = l1y - pdy1 13 | pdx2 = pdx * d2 14 | pdy2 = pdy * d2 15 | bdx = l2x - pdx2 16 | bdy = l2y - pdy2 17 | pdx3 = pdx * d3 18 | pdy3 = pdy * d3 19 | cdx = l3x - pdx3 20 | cdy = l3y - pdy3 21 | 22 | abdeta = adx * bdy 23 | abdetb = bdx * ady 24 | abdet = abdeta - abdetb 25 | 26 | bcdeta = bdx * cdy 27 | bcdetb = cdx * bdy 28 | bcdet = bcdeta - bcdetb 29 | 30 | cadeta = cdx * ady 31 | cadetb = adx * cdy 32 | cadet = cadeta - cadetb 33 | 34 | alifta = adx * adx 35 | aliftb = ady * ady 36 | aliftt = alifta + aliftb 37 | alift2 = aliftt * d2 38 | alift = alift2 * d3 39 | 40 | blifta = bdx * bdx 41 | bliftb = bdy * bdy 42 | bliftt = blifta + bliftb 43 | blift = bliftt * d3 44 | 45 | clifta = cdx * cdx 46 | cliftb = cdy * cdy 47 | cliftt = clifta + cliftb 48 | clift = cliftt * d2 49 | 50 | la = alift * bcdet 51 | lb = blift * cadet 52 | lc = clift * abdet 53 | lab2 = lc + lb 54 | lab = lab2 * d1 55 | 56 | L = lab + la 57 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/incircle_indirect_SSSS.txt: -------------------------------------------------------------------------------- 1 | implicitPoint2D_SSI(p1:l1x;3;32;2.221313410988302e-015;4.000000000000004;l1y;3;32;2.221313410988302e-015;4.000000000000004;d1;2;16;8.883952601346225e-016;2.000000000000001) 2 | 3 | implicitPoint2D_SSI(p2:l2x;3;32;2.221313410988302e-015;4.000000000000004;l2y;3;32;2.221313410988302e-015;4.000000000000004;d2;2;16;8.883952601346225e-016;2.000000000000001) 4 | 5 | implicitPoint2D_SSI(p3:l3x;3;32;2.221313410988302e-015;4.000000000000004;l3y;3;32;2.221313410988302e-015;4.000000000000004;d3;2;16;8.883952601346225e-016;2.000000000000001) 6 | 7 | implicitPoint2D_SSI(p4:l4x;3;32;2.221313410988302e-015;4.000000000000004;l4y;3;32;2.221313410988302e-015;4.000000000000004;d4;2;16;8.883952601346225e-016;2.000000000000001) 8 | 9 | l1xt = l1x * d4 10 | l1yt = l1y * d4 11 | l2xt = l2x * d4 12 | l2yt = l2y * d4 13 | l3xt = l3x * d4 14 | l3yt = l3y * d4 15 | l4x1 = l4x * d1 16 | l4y1 = l4y * d1 17 | adx = l1xt - l4x1 18 | ady = l1yt - l4y1 19 | l4x2 = l4x * d2 20 | l4y2 = l4y * d2 21 | bdx = l2xt - l4x2 22 | bdy = l2yt - l4y2 23 | l4x3 = l4x * d3 24 | l4y3 = l4y * d3 25 | cdx = l3xt - l4x3 26 | cdy = l3yt - l4y3 27 | 28 | abdeta = adx * bdy 29 | abdetb = bdx * ady 30 | abdet = abdeta - abdetb 31 | 32 | bcdeta = bdx * cdy 33 | bcdetb = cdx * bdy 34 | bcdet = bcdeta - bcdetb 35 | 36 | cadeta = cdx * ady 37 | cadetb = adx * cdy 38 | cadet = cadeta - cadetb 39 | 40 | alifta = adx * adx 41 | aliftb = ady * ady 42 | aliftt = alifta + aliftb 43 | alift2 = aliftt * d2 44 | alift = alift2 * d3 45 | 46 | blifta = bdx * bdx 47 | bliftb = bdy * bdy 48 | bliftt = blifta + bliftb 49 | blift = bliftt * d3 50 | 51 | clifta = cdx * cdx 52 | cliftb = cdy * cdy 53 | cliftt = clifta + cliftb 54 | clift = cliftt * d2 55 | 56 | la = alift * bcdet 57 | lb = blift * cadet 58 | lc = clift * abdet 59 | lab2 = lc + lb 60 | lab = lab2 * d1 61 | 62 | L = lab + la 63 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/incirclexy_indirect_LEEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | pbx pby pcx pcy pdx pdy 3 | 4 | pdxt = pdx * d1 5 | pdyt = pdy * d1 6 | adx = l1x - pdxt 7 | ady = l1y - pdyt 8 | bdx = pbx - pdx 9 | bdy = pby - pdy 10 | cdx = pcx - pdx 11 | cdy = pcy - pdy 12 | 13 | abdeta = adx * bdy 14 | abdetb = bdx * ady 15 | abdet = abdeta - abdetb 16 | 17 | bcdeta = bdx * cdy 18 | bcdetb = cdx * bdy 19 | bcdet = bcdeta - bcdetb 20 | 21 | cadeta = cdx * ady 22 | cadetb = adx * cdy 23 | cadet = cadeta - cadetb 24 | 25 | alifta = adx * adx 26 | aliftb = ady * ady 27 | alift = alifta + aliftb 28 | 29 | blifta = bdx * bdx 30 | bliftb = bdy * bdy 31 | blift = blifta + bliftb 32 | 33 | clifta = cdx * cdx 34 | cliftb = cdy * cdy 35 | clift = clifta + cliftb 36 | 37 | la = alift * bcdet 38 | lbt = blift * cadet 39 | lb = lbt * d1 40 | lct = clift * abdet 41 | lc = lct * d1 42 | lab = la + lb 43 | 44 | L = lab + lc 45 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/incirclexy_indirect_LLEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | 3 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 4 | 5 | pcx pcy pdx pdy 6 | 7 | pdx1 = pdx * d1 8 | pdy1 = pdy * d1 9 | adx = l1x - pdx1 10 | ady = l1y - pdy1 11 | pdx2 = pdx * d2 12 | pdy2 = pdy * d2 13 | bdx = l2x - pdx2 14 | bdy = l2y - pdy2 15 | cdx = pcx - pdx 16 | cdy = pcy - pdy 17 | 18 | abdeta = adx * bdy 19 | abdetb = bdx * ady 20 | abdet = abdeta - abdetb 21 | 22 | bcdeta = bdx * cdy 23 | bcdetb = cdx * bdy 24 | bcdet = bcdeta - bcdetb 25 | 26 | cadeta = cdx * ady 27 | cadetb = adx * cdy 28 | cadet = cadeta - cadetb 29 | 30 | alifta = adx * adx 31 | aliftb = ady * ady 32 | aliftt = alifta + aliftb 33 | alift = aliftt * d2 34 | 35 | blifta = bdx * bdx 36 | bliftb = bdy * bdy 37 | blift = blifta + bliftb 38 | 39 | clifta = cdx * cdx 40 | cliftb = cdy * cdy 41 | cliftt = clifta + cliftb 42 | clift = cliftt * d2 43 | 44 | la = alift * bcdet 45 | lb = blift * cadet 46 | lc = clift * abdet 47 | lab = lc + lb 48 | lab2 = lab * d1 49 | 50 | L = lab2 + la 51 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/incirclexy_indirect_LLLE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_LPI(p3:l3x;4;1024;1.221613955826318e-14;12.00000000000002;l3y;4;1024;1.221613955826318e-14;12.00000000000002;l3z;4;1024;1.221613955826318e-14;12.00000000000002;d3;3;192;4.886390771174922e-015;6.000000000000006) 4 | 5 | pdx pdy 6 | 7 | pdx1 = pdx * d1 8 | pdy1 = pdy * d1 9 | adx = l1x - pdx1 10 | ady = l1y - pdy1 11 | pdx2 = pdx * d2 12 | pdy2 = pdy * d2 13 | bdx = l2x - pdx2 14 | bdy = l2y - pdy2 15 | pdx3 = pdx * d3 16 | pdy3 = pdy * d3 17 | cdx = l3x - pdx3 18 | cdy = l3y - pdy3 19 | 20 | abdeta = adx * bdy 21 | abdetb = bdx * ady 22 | abdet = abdeta - abdetb 23 | 24 | bcdeta = bdx * cdy 25 | bcdetb = cdx * bdy 26 | bcdet = bcdeta - bcdetb 27 | 28 | cadeta = cdx * ady 29 | cadetb = adx * cdy 30 | cadet = cadeta - cadetb 31 | 32 | alifta = adx * adx 33 | aliftb = ady * ady 34 | aliftt = alifta + aliftb 35 | alift2 = aliftt * d2 36 | alift = alift2 * d3 37 | 38 | blifta = bdx * bdx 39 | bliftb = bdy * bdy 40 | bliftt = blifta + bliftb 41 | blift = bliftt * d3 42 | 43 | clifta = cdx * cdx 44 | cliftb = cdy * cdy 45 | cliftt = clifta + cliftb 46 | clift = cliftt * d2 47 | 48 | la = alift * bcdet 49 | lb = blift * cadet 50 | lc = clift * abdet 51 | lab2 = lc + lb 52 | lab = lab2 * d1 53 | 54 | L = lab + la 55 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/incirclexy_indirect_LLLL.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_LPI(p3:l3x;4;1024;1.221613955826318e-14;12.00000000000002;l3y;4;1024;1.221613955826318e-14;12.00000000000002;l3z;4;1024;1.221613955826318e-14;12.00000000000002;d3;3;192;4.886390771174922e-015;6.000000000000006) 4 | implicitPoint3D_LPI(p4:l4x;4;1024;1.221613955826318e-14;12.00000000000002;l4y;4;1024;1.221613955826318e-14;12.00000000000002;l4z;4;1024;1.221613955826318e-14;12.00000000000002;d4;3;192;4.886390771174922e-015;6.000000000000006) 5 | 6 | l1xt = l1x * d4 7 | l1yt = l1y * d4 8 | l2xt = l2x * d4 9 | l2yt = l2y * d4 10 | l3xt = l3x * d4 11 | l3yt = l3y * d4 12 | l4x1 = l4x * d1 13 | l4y1 = l4y * d1 14 | adx = l1xt - l4x1 15 | ady = l1yt - l4y1 16 | l4x2 = l4x * d2 17 | l4y2 = l4y * d2 18 | bdx = l2xt - l4x2 19 | bdy = l2yt - l4y2 20 | l4x3 = l4x * d3 21 | l4y3 = l4y * d3 22 | cdx = l3xt - l4x3 23 | cdy = l3yt - l4y3 24 | 25 | abdeta = adx * bdy 26 | abdetb = bdx * ady 27 | abdet = abdeta - abdetb 28 | 29 | bcdeta = bdx * cdy 30 | bcdetb = cdx * bdy 31 | bcdet = bcdeta - bcdetb 32 | 33 | cadeta = cdx * ady 34 | cadetb = adx * cdy 35 | cadet = cadeta - cadetb 36 | 37 | alifta = adx * adx 38 | aliftb = ady * ady 39 | aliftt = alifta + aliftb 40 | alift2 = aliftt * d2 41 | alift = alift2 * d3 42 | 43 | blifta = bdx * bdx 44 | bliftb = bdy * bdy 45 | bliftt = blifta + bliftb 46 | blift = bliftt * d3 47 | 48 | clifta = cdx * cdx 49 | cliftb = cdy * cdy 50 | cliftt = clifta + cliftb 51 | clift = cliftt * d2 52 | 53 | la = alift * bcdet 54 | lb = blift * cadet 55 | lc = clift * abdet 56 | lab2 = lc + lb 57 | lab = lab2 * d1 58 | 59 | L = lab + la 60 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lambda2d_SSI.txt: -------------------------------------------------------------------------------- 1 | ea1x ea1y ea2x ea2y eb1x eb1y eb2x eb2y 2 | t1a = ea1x * ea2y 3 | t1b = ea2x * ea1y 4 | t1 = t1a - t1b 5 | tx2 = eb1x - eb2x 6 | t3a = eb1x * eb2y 7 | t3b = eb2x * eb1y 8 | t3 = t3a - t3b 9 | tx4 = ea1x - ea2x 10 | ty2 = eb1y - eb2y 11 | ty4 = ea1y - ea2y 12 | lxa = t1 * tx2 13 | lxb = t3 * tx4 14 | lambda_x = lxa - lxb 15 | lya = t1 * ty2 16 | lyb = t3 * ty4 17 | lambda_y = lya - lyb 18 | deta = tx4 * ty2 19 | detb = tx2 * ty4 20 | lambda_det = deta - detb 21 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lambda3d_LNC.txt: -------------------------------------------------------------------------------- 1 | px py pz qx qy qz t 2 | vx = px - qx 3 | vy = py - qy 4 | vz = pz - qz 5 | vxt = vx * t 6 | vyt = vy * t 7 | vzt = vz * t 8 | lambda_x = px - vxt 9 | lambda_y = py - vyt 10 | lambda_z = pz - vzt 11 | lambda_d = 1 12 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lambda3d_LPI.txt: -------------------------------------------------------------------------------- 1 | px py pz qx qy qz rx ry rz sx sy sz tx ty tz 2 | a11 = px - qx 3 | a12 = py - qy 4 | a13 = pz - qz 5 | a21 = sx - rx 6 | a22 = sy - ry 7 | a23 = sz - rz 8 | a31 = tx - rx 9 | a32 = ty - ry 10 | a33 = tz - rz 11 | tv1 = a22 * a33 12 | tv2 = a23 * a32 13 | a2233 = tv1 - tv2 14 | tv3 = a21 * a33 15 | tv4 = a23 * a31 16 | a2133 = tv3 - tv4 17 | tv5 = a21 * a32 18 | tv6 = a22 * a31 19 | a2132 = tv5 - tv6 20 | tv7 = a11 * a2233 21 | tv8 = a12 * a2133 22 | tv9 = a13 * a2132 23 | tt1 = tv7 - tv8 24 | lambda_d = tt1 + tv9 25 | px_rx = px - rx 26 | py_ry = py - ry 27 | pz_rz = pz - rz 28 | tt2 = py_ry * a2133 29 | tt3 = px_rx * a2233 30 | tt4 = pz_rz * a2132 31 | tt5 = tt3 + tt4 32 | n = tt5 - tt2 33 | ax = a11 * n 34 | ay = a12 * n 35 | az = a13 * n 36 | dpx = lambda_d * px 37 | dpy = lambda_d * py 38 | dpz = lambda_d * pz 39 | lambda_x = dpx - ax 40 | lambda_y = dpy - ay 41 | lambda_z = dpz - az 42 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lambda3d_TPI.txt: -------------------------------------------------------------------------------- 1 | ov1x ov1y ov1z ov2x ov2y ov2z ov3x ov3y ov3z ow1x ow1y ow1z ow2x ow2y ow2z ow3x ow3y ow3z ou1x ou1y ou1z ou2x ou2y ou2z ou3x ou3y ou3z 2 | v3x = ov3x - ov2x 3 | v3y = ov3y - ov2y 4 | v3z = ov3z - ov2z 5 | v2x = ov2x - ov1x 6 | v2y = ov2y - ov1y 7 | v2z = ov2z - ov1z 8 | w3x = ow3x - ow2x 9 | w3y = ow3y - ow2y 10 | w3z = ow3z - ow2z 11 | w2x = ow2x - ow1x 12 | w2y = ow2y - ow1y 13 | w2z = ow2z - ow1z 14 | u3x = ou3x - ou2x 15 | u3y = ou3y - ou2y 16 | u3z = ou3z - ou2z 17 | u2x = ou2x - ou1x 18 | u2y = ou2y - ou1y 19 | u2z = ou2z - ou1z 20 | nvx1 = v2y * v3z 21 | nvx2 = v2z * v3y 22 | nvx = nvx1 - nvx2 23 | nvy1 = v3x * v2z 24 | nvy2 = v3z * v2x 25 | nvy = nvy1 - nvy2 26 | nvz1 = v2x * v3y 27 | nvz2 = v2y * v3x 28 | nvz = nvz1 - nvz2 29 | nwx1 = w2y * w3z 30 | nwx2 = w2z * w3y 31 | nwx = nwx1 - nwx2 32 | nwy1 = w3x * w2z 33 | nwy2 = w3z * w2x 34 | nwy = nwy1 - nwy2 35 | nwz1 = w2x * w3y 36 | nwz2 = w2y * w3x 37 | nwz = nwz1 - nwz2 38 | nux1 = u2y * u3z 39 | nux2 = u2z * u3y 40 | nux = nux1 - nux2 41 | nuy1 = u3x * u2z 42 | nuy2 = u3z * u2x 43 | nuy = nuy1 - nuy2 44 | nuz1 = u2x * u3y 45 | nuz2 = u2y * u3x 46 | nuz = nuz1 - nuz2 47 | nwyuz1 = nwy * nuz 48 | nwyuz2 = nwz * nuy 49 | nwyuz = nwyuz1 - nwyuz2 50 | nwxuz1 = nwx * nuz 51 | nwxuz2 = nwz * nux 52 | nwxuz = nwxuz1 - nwxuz2 53 | nwxuy1 = nwx * nuy 54 | nwxuy2 = nwy * nux 55 | nwxuy = nwxuy1 - nwxuy2 56 | nvyuz1 = nvy * nuz 57 | nvyuz2 = nvz * nuy 58 | nvyuz = nvyuz1 - nvyuz2 59 | nvxuz1 = nvx * nuz 60 | nvxuz2 = nvz * nux 61 | nvxuz = nvxuz1 - nvxuz2 62 | nvxuy1 = nvx * nuy 63 | nvxuy2 = nvy * nux 64 | nvxuy = nvxuy1 - nvxuy2 65 | nvywz1 = nvy * nwz 66 | nvywz2 = nvz * nwy 67 | nvywz = nvywz1 - nvywz2 68 | nvxwz1 = nvx * nwz 69 | nvxwz2 = nvz * nwx 70 | nvxwz = nvxwz1 - nvxwz2 71 | nvxwy1 = nvx * nwy 72 | nvxwy2 = nvy * nwx 73 | nvxwy = nvxwy1 - nvxwy2 74 | p1a = nvx * ov1x 75 | p1b = nvy * ov1y 76 | p1c = nvz * ov1z 77 | p1ab = p1a + p1b 78 | p1 = p1ab + p1c 79 | p2a = nwx * ow1x 80 | p2b = nwy * ow1y 81 | p2c = nwz * ow1z 82 | p2ab = p2a + p2b 83 | p2 = p2ab + p2c 84 | p3a = nux * ou1x 85 | p3b = nuy * ou1y 86 | p3c = nuz * ou1z 87 | p3ab = p3a + p3b 88 | p3 = p3ab + p3c 89 | lxa = p1 * nwyuz 90 | lxb = p3 * nvywz 91 | lxc = p2 * nvyuz 92 | lxab = lxa + lxb 93 | lambda_x = lxab - lxc 94 | lya = p2 * nvxuz 95 | lyb = p3 * nvxwz 96 | lyc = p1 * nwxuz 97 | lybc = lyc + lyb 98 | lambda_y = lya - lybc 99 | lza = p3 * nvxwy 100 | lzb = p1 * nwxuy 101 | lzc = p2 * nvxuy 102 | lzab = lza + lzb 103 | lambda_z = lzab - lzc 104 | da = nvx * nwyuz 105 | db = nvz * nwxuy 106 | dc = nvy * nwxuz 107 | dab = da + db 108 | lambda_d = dab - dc 109 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnX_LE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | bx 3 | 4 | dbx = bx * d1 5 | kx = l1x - dbx 6 | 7 | // SIGN d1 8 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnX_LL.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | 4 | k1 = d2 * l1x 5 | k2 = d1 * l2x 6 | kx = k1 - k2 7 | 8 | // SIGN d1 d2 9 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnX_LT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | 4 | k1 = d2 * l1x 5 | k2 = d1 * l2x 6 | kx = k1 - k2 7 | 8 | // SIGN d1 d2 9 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnX_TE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | bx 3 | 4 | dbx = bx * d1 5 | kx = l1x - dbx 6 | 7 | // SIGN d1 8 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnX_TT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | 4 | k1 = d2 * l1x 5 | k2 = d1 * l2x 6 | kx = k1 - k2 7 | 8 | // SIGN d1 d2 9 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnY_LE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | by 3 | 4 | dby = by * d1 5 | ky = l1y - dby 6 | 7 | // SIGN d1 8 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnY_LL.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | 4 | k1 = d2 * l1y 5 | k2 = d1 * l2y 6 | ky = k1 - k2 7 | 8 | // SIGN d1 d2 9 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnY_LT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | 4 | k1 = d2 * l1y 5 | k2 = d1 * l2y 6 | ky = k1 - k2 7 | 8 | // SIGN d1 d2 9 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnY_TE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | by 3 | 4 | dby = by * d1 5 | ky = l1y - dby 6 | 7 | // SIGN d1 8 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnY_TT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | 4 | k1 = d2 * l1y 5 | k2 = d1 * l2y 6 | ky = k1 - k2 7 | 8 | // SIGN d1 d2 9 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnZ_LE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | bz 3 | 4 | dbz = bz * d1 5 | kz = l1z - dbz 6 | 7 | // SIGN d1 8 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnZ_LL.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | 4 | k1 = d2 * l1z 5 | k2 = d1 * l2z 6 | kz = k1 - k2 7 | 8 | // SIGN d1 d2 9 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnZ_LT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | 4 | k1 = d2 * l1z 5 | k2 = d1 * l2z 6 | kz = k1 - k2 7 | 8 | // SIGN d1 d2 9 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnZ_TE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | bz 3 | 4 | dbz = bz * d1 5 | kz = l1z - dbz 6 | 7 | // SIGN d1 8 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/lessThanOnZ_TT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | 4 | k1 = d2 * l1z 5 | k2 = d1 * l2z 6 | kz = k1 - k2 7 | 8 | // SIGN d1 d2 9 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2d_indirect_SEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint2D_SSI(p1:l1x;3;32;2.221313410988302e-015;4.000000000000004;l1y;3;32;2.221313410988302e-015;4.000000000000004;d1;2;16;8.883952601346225e-016;2.000000000000001) 2 | p2x p2y p3x p3y 3 | 4 | t1x = p2y - p3y 5 | t1y = p3x - p2x 6 | e2 = l1x * t1x 7 | e3 = l1y * t1y 8 | e = e2 + e3 9 | pr1 = p2x * p3y 10 | pr2 = p2y * p3x 11 | pr = pr1 - pr2 12 | dpr = d1 * pr 13 | det = dpr + e 14 | 15 | // SIGN d1 16 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2d_indirect_SSE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint2D_SSI(p1:l1x;3;32;2.221313410988302e-015;4.000000000000004;l1y;3;32;2.221313410988302e-015;4.000000000000004;d1;2;16;8.883952601346225e-016;2.000000000000001) 2 | 3 | implicitPoint2D_SSI(p2:l2x;3;32;2.221313410988302e-015;4.000000000000004;l2y;3;32;2.221313410988302e-015;4.000000000000004;d2;2;16;8.883952601346225e-016;2.000000000000001) 4 | 5 | p3x p3y 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * p3y 9 | e = d1 * l2y 10 | f = d2 * l1y 11 | g = d1 * p3x 12 | ab = a - b 13 | cd = c - l1y 14 | ef = e - f 15 | gh = g - l1x 16 | abcd = ab * cd 17 | efgh = ef * gh 18 | L = abcd - efgh 19 | 20 | // SIGN d2 21 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2d_indirect_SSS.txt: -------------------------------------------------------------------------------- 1 | implicitPoint2D_SSI(p1:l1x;3;32;2.221313410988302e-015;4.000000000000004;l1y;3;32;2.221313410988302e-015;4.000000000000004;d1;2;16;8.883952601346225e-016;2.000000000000001) 2 | 3 | implicitPoint2D_SSI(p2:l2x;3;32;2.221313410988302e-015;4.000000000000004;l2y;3;32;2.221313410988302e-015;4.000000000000004;d2;2;16;8.883952601346225e-016;2.000000000000001) 4 | 5 | implicitPoint2D_SSI(p3:l3x;3;32;2.221313410988302e-015;4.000000000000004;l3y;3;32;2.221313410988302e-015;4.000000000000004;d3;2;16;8.883952601346225e-016;2.000000000000001) 6 | 7 | a = d1 * l2x 8 | b = d2 * l1x 9 | c = d1 * l3y 10 | d = d3 * l1y 11 | e = d1 * l2y 12 | f = d2 * l1y 13 | g = d1 * l3x 14 | h = d3 * l1x 15 | ab = a - b 16 | cd = c - d 17 | ef = e - f 18 | gh = g - h 19 | abcd = ab * cd 20 | efgh = ef * gh 21 | L = abcd - efgh 22 | 23 | // SIGN d2 d3 24 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dxy_indirect_LEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | p2x p2y // Explicit point 1 3 | p3x p3y // Explicit point 2 4 | 5 | t1x = p2y - p3y 6 | t1y = p3x - p2x 7 | e2 = l1x * t1x 8 | e3 = l1y * t1y 9 | e = e2 + e3 10 | pr1 = p2x * p3y 11 | pr2 = p2y * p3x 12 | pr = pr1 - pr2 13 | dpr = d1 * pr 14 | det = dpr + e 15 | 16 | // SIGN d1 17 | 18 | // det = d1 * (p2x * p3y - p2y * p3x) + l1x * (p2y - p3y) + l1y * (p3x - p2x) 19 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dxy_indirect_LLE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | op3x op3y // Explicit point 4 | 5 | //Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * op3y 9 | e = d1 * l2y 10 | f = d2 * l1y 11 | g = d1 * op3x 12 | ab = a - b 13 | cd = c - l1y 14 | ef = e - f 15 | gh = g - l1x 16 | abcd = ab * cd 17 | efgh = ef * gh 18 | L = abcd - efgh 19 | 20 | // SIGN d2 21 | 22 | // L = (d1 * l2x - d2 * l1x) * (d1 * op3y - l1y) - (d1 * l2y - d2 * l1y) * (d1 * op3x - l1x) 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dxy_indirect_LLL.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_LPI(p3:l3x;4;1024;1.221613955826318e-14;12.00000000000002;l3y;4;1024;1.221613955826318e-14;12.00000000000002;l3z;4;1024;1.221613955826318e-14;12.00000000000002;d3;3;192;4.886390771174922e-015;6.000000000000006) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | 24 | // L = (d1 * l2x - d2 * l1x) * (d1 * l3y - d3 * l1y) - (d1 * l2y - d2 * l1y) * (d1 * l3x - d3 * l1x) 25 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dxy_indirect_LLT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dxy_indirect_LTE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | // Third point (explicit) 4 | p3x p3y 5 | 6 | // Orient2d 7 | a = d1 * l2x 8 | b = d2 * l1x 9 | c = d1 * p3y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * p3x 13 | ab = a - b 14 | cd = c - l1y 15 | ef = e - f 16 | gh = g - l1x 17 | abcd = ab * cd 18 | efgh = ef * gh 19 | L = abcd - efgh 20 | 21 | // SIGN d2 22 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dxy_indirect_LTT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dxy_indirect_TEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | p2x p2y // Second point (explicit) 3 | p3x p3y // Third point (explicit) 4 | 5 | t1x = p2y - p3y 6 | t1y = p3x - p2x 7 | e2 = l1x * t1x 8 | e3 = l1y * t1y 9 | e = e2 + e3 10 | pr1 = p2x * p3y 11 | pr2 = p2y * p3x 12 | pr = pr1 - pr2 13 | dpr = d1 * pr 14 | det = dpr + e 15 | 16 | // SIGN d1 17 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dxy_indirect_TTE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | // Third point (explicit) 4 | p3x p3y 5 | 6 | // Orient2d 7 | a = d1 * l2x 8 | b = d2 * l1x 9 | c = d1 * p3y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * p3x 13 | ab = a - b 14 | cd = c - l1y 15 | ef = e - f 16 | gh = g - l1x 17 | abcd = ab * cd 18 | efgh = ef * gh 19 | L = abcd - efgh 20 | 21 | // SIGN d2 22 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dxy_indirect_TTT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dyz_indirect_LEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1z;4;1024;1.221613955826318e-14;12.00000000000002;l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | p2x p2y // Explicit point 1 3 | p3x p3y // Explicit point 2 4 | 5 | t1x = p2y - p3y 6 | t1y = p3x - p2x 7 | e2 = l1x * t1x 8 | e3 = l1y * t1y 9 | e = e2 + e3 10 | pr1 = p2x * p3y 11 | pr2 = p2y * p3x 12 | pr = pr1 - pr2 13 | dpr = d1 * pr 14 | det = dpr + e 15 | 16 | // SIGN d1 17 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dyz_indirect_LLE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1z;4;1024;1.221613955826318e-14;12.00000000000002;l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2z;4;1024;1.221613955826318e-14;12.00000000000002;l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | op3x op3y // Explicit point 4 | 5 | //Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * op3y 9 | e = d1 * l2y 10 | f = d2 * l1y 11 | g = d1 * op3x 12 | ab = a - b 13 | cd = c - l1y 14 | ef = e - f 15 | gh = g - l1x 16 | abcd = ab * cd 17 | efgh = ef * gh 18 | L = abcd - efgh 19 | 20 | // SIGN d2 21 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dyz_indirect_LLL.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1z;4;1024;1.221613955826318e-14;12.00000000000002;l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2z;4;1024;1.221613955826318e-14;12.00000000000002;l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_LPI(p3:l3z;4;1024;1.221613955826318e-14;12.00000000000002;l3x;4;1024;1.221613955826318e-14;12.00000000000002;l3y;4;1024;1.221613955826318e-14;12.00000000000002;d3;3;192;4.886390771174922e-015;6.000000000000006) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dyz_indirect_LLT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1z;4;1024;1.221613955826318e-14;12.00000000000002;l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2z;4;1024;1.221613955826318e-14;12.00000000000002;l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_TPI(p3:l3z;7;1024;2.931951556539587e-013;144.0000000000005;l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dyz_indirect_LTE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1z;4;1024;1.221613955826318e-14;12.00000000000002;l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2z;7;1024;2.931951556539587e-013;144.0000000000005;l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | // Third point (explicit) 4 | p3x p3y 5 | 6 | // Orient2d 7 | a = d1 * l2x 8 | b = d2 * l1x 9 | c = d1 * p3y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * p3x 13 | ab = a - b 14 | cd = c - l1y 15 | ef = e - f 16 | gh = g - l1x 17 | abcd = ab * cd 18 | efgh = ef * gh 19 | L = abcd - efgh 20 | 21 | // SIGN d2 22 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dyz_indirect_LTT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1z;4;1024;1.221613955826318e-14;12.00000000000002;l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2z;7;1024;2.931951556539587e-013;144.0000000000005;l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3z;7;1024;2.931951556539587e-013;144.0000000000005;l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dyz_indirect_TEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1z;7;1024;2.931951556539587e-013;144.0000000000005;l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | p2x p2y // Second point (explicit) 3 | p3x p3y // Third point (explicit) 4 | 5 | t1x = p2y - p3y 6 | t1y = p3x - p2x 7 | e2 = l1x * t1x 8 | e3 = l1y * t1y 9 | e = e2 + e3 10 | pr1 = p2x * p3y 11 | pr2 = p2y * p3x 12 | pr = pr1 - pr2 13 | dpr = d1 * pr 14 | det = dpr + e 15 | 16 | // SIGN d1 17 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dyz_indirect_TTE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1z;7;1024;2.931951556539587e-013;144.0000000000005;l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2z;7;1024;2.931951556539587e-013;144.0000000000005;l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | // Third point (explicit) 4 | p3x p3y 5 | 6 | // Orient2d 7 | a = d1 * l2x 8 | b = d2 * l1x 9 | c = d1 * p3y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * p3x 13 | ab = a - b 14 | cd = c - l1y 15 | ef = e - f 16 | gh = g - l1x 17 | abcd = ab * cd 18 | efgh = ef * gh 19 | L = abcd - efgh 20 | 21 | // SIGN d2 22 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dyz_indirect_TTT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1z;7;1024;2.931951556539587e-013;144.0000000000005;l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2z;7;1024;2.931951556539587e-013;144.0000000000005;l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3z;7;1024;2.931951556539587e-013;144.0000000000005;l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dzx_indirect_LEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;l1x;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | p2x p2y // Explicit point 1 3 | p3x p3y // Explicit point 2 4 | 5 | t1x = p2y - p3y 6 | t1y = p3x - p2x 7 | e2 = l1x * t1x 8 | e3 = l1y * t1y 9 | e = e2 + e3 10 | pr1 = p2x * p3y 11 | pr2 = p2y * p3x 12 | pr = pr1 - pr2 13 | dpr = d1 * pr 14 | det = dpr + e 15 | 16 | // SIGN d1 17 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dzx_indirect_LLE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;l1x;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;l2x;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | op3x op3y // Explicit point 4 | 5 | //Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * op3y 9 | e = d1 * l2y 10 | f = d2 * l1y 11 | g = d1 * op3x 12 | ab = a - b 13 | cd = c - l1y 14 | ef = e - f 15 | gh = g - l1x 16 | abcd = ab * cd 17 | efgh = ef * gh 18 | L = abcd - efgh 19 | 20 | // SIGN d2 21 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dzx_indirect_LLL.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;l1x;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;l2x;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_LPI(p3:l3y;4;1024;1.221613955826318e-14;12.00000000000002;l3z;4;1024;1.221613955826318e-14;12.00000000000002;l3x;4;1024;1.221613955826318e-14;12.00000000000002;d3;3;192;4.886390771174922e-015;6.000000000000006) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dzx_indirect_LLT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;l1x;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;l2x;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_TPI(p3:l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;l3x;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dzx_indirect_LTE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;l1x;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;l2x;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | // Third point (explicit) 4 | p3x p3y 5 | 6 | // Orient2d 7 | a = d1 * l2x 8 | b = d2 * l1x 9 | c = d1 * p3y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * p3x 13 | ab = a - b 14 | cd = c - l1y 15 | ef = e - f 16 | gh = g - l1x 17 | abcd = ab * cd 18 | efgh = ef * gh 19 | L = abcd - efgh 20 | 21 | // SIGN d2 22 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dzx_indirect_LTT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;l1x;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;l2x;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;l3x;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dzx_indirect_TEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;l1x;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | p2x p2y // Second point (explicit) 3 | p3x p3y // Third point (explicit) 4 | 5 | t1x = p2y - p3y 6 | t1y = p3x - p2x 7 | e2 = l1x * t1x 8 | e3 = l1y * t1y 9 | e = e2 + e3 10 | pr1 = p2x * p3y 11 | pr2 = p2y * p3x 12 | pr = pr1 - pr2 13 | dpr = d1 * pr 14 | det = dpr + e 15 | 16 | // SIGN d1 17 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dzx_indirect_TTE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;l1x;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;l2x;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | // Third point (explicit) 4 | p3x p3y 5 | 6 | // Orient2d 7 | a = d1 * l2x 8 | b = d2 * l1x 9 | c = d1 * p3y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * p3x 13 | ab = a - b 14 | cd = c - l1y 15 | ef = e - f 16 | gh = g - l1x 17 | abcd = ab * cd 18 | efgh = ef * gh 19 | L = abcd - efgh 20 | 21 | // SIGN d2 22 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient2dzx_indirect_TTT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;l1x;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;l2x;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;l3x;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient3d_indirect_LEEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | ax ay az bx by bz cx cy cz 3 | 4 | dcx = d1 * cx 5 | dcy = d1 * cy 6 | dcz = d1 * cz 7 | ix_cx = l1x - dcx 8 | iy_cy = l1y - dcy 9 | ax_cx = ax - cx 10 | ay_cy = ay - cy 11 | az_cz = az - cz 12 | iz_cz = l1z - dcz 13 | bx_cx = bx - cx 14 | by_cy = by - cy 15 | bz_cz = bz - cz 16 | tmc_a = ix_cx * ay_cy 17 | tmc_b = iy_cy * ax_cx 18 | m01 = tmc_a - tmc_b 19 | tmi_a = ix_cx * az_cz 20 | tmi_b = iz_cz * ax_cx 21 | m02 = tmi_a - tmi_b 22 | tma_a = iy_cy * az_cz 23 | tma_b = iz_cz * ay_cy 24 | m12 = tma_a - tma_b 25 | mt1 = m01 * bz_cz 26 | mt2 = m02 * by_cy 27 | mt3 = m12 * bx_cx 28 | mtt = mt2 - mt1 29 | m012 = mtt - mt3 30 | 31 | // SIGN d1 32 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient3d_indirect_LLEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | p3x p3y p3z 4 | p4x p4y p4z 5 | 6 | d1p4x = d1 * p4x 7 | d1p4y = d1 * p4y 8 | d1p4z = d1 * p4z 9 | d2p4x = d2 * p4x 10 | d2p4y = d2 * p4y 11 | d2p4z = d2 * p4z 12 | 13 | p1p4x = l1x - d1p4x 14 | p1p4y = l1y - d1p4y 15 | p1p4z = l1z - d1p4z 16 | p2p4x = l2x - d2p4x 17 | p2p4y = l2y - d2p4y 18 | p2p4z = l2z - d2p4z 19 | p3p4x = p3x - p4x 20 | p3p4y = p3y - p4y 21 | p3p4z = p3z - p4z 22 | 23 | tmc_a = p1p4x * p2p4y 24 | tmc_b = p1p4y * p2p4x 25 | m01 = tmc_a - tmc_b 26 | tmi_a = p1p4x * p2p4z 27 | tmi_b = p1p4z * p2p4x 28 | m02 = tmi_a - tmi_b 29 | tma_a = p1p4y * p2p4z 30 | tma_b = p1p4z * p2p4y 31 | m12 = tma_a - tma_b 32 | mt1 = m01 * p3p4z 33 | mt2 = m02 * p3p4y 34 | mt3 = m12 * p3p4x 35 | mtt = mt2 - mt1 36 | m012 = mtt - mt3 37 | 38 | // SIGN d1 d2 39 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient3d_indirect_LLLE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_LPI(p3:l3x;4;1024;1.221613955826318e-14;12.00000000000002;l3y;4;1024;1.221613955826318e-14;12.00000000000002;l3z;4;1024;1.221613955826318e-14;12.00000000000002;d3;3;192;4.886390771174922e-015;6.000000000000006) 4 | p4x p4y p4z 5 | 6 | d1p4x = d1 * p4x 7 | d1p4y = d1 * p4y 8 | d1p4z = d1 * p4z 9 | d2p4x = d2 * p4x 10 | d2p4y = d2 * p4y 11 | d2p4z = d2 * p4z 12 | d3p4x = d3 * p4x 13 | d3p4y = d3 * p4y 14 | d3p4z = d3 * p4z 15 | 16 | p1p4x = l1x - d1p4x 17 | p1p4y = l1y - d1p4y 18 | p1p4z = l1z - d1p4z 19 | p2p4x = l2x - d2p4x 20 | p2p4y = l2y - d2p4y 21 | p2p4z = l2z - d2p4z 22 | p3p4x = l3x - d3p4x 23 | p3p4y = l3y - d3p4y 24 | p3p4z = l3z - d3p4z 25 | 26 | tmc_a = p1p4x * p2p4y 27 | tmc_b = p1p4y * p2p4x 28 | m01 = tmc_a - tmc_b 29 | tmi_a = p1p4x * p2p4z 30 | tmi_b = p1p4z * p2p4x 31 | m02 = tmi_a - tmi_b 32 | tma_a = p1p4y * p2p4z 33 | tma_b = p1p4z * p2p4y 34 | m12 = tma_a - tma_b 35 | mt1 = m01 * p3p4z 36 | mt2 = m02 * p3p4y 37 | mt3 = m12 * p3p4x 38 | mtt = mt2 - mt1 39 | m012 = mtt - mt3 40 | 41 | // SIGN d1 d2 d3 42 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient3d_indirect_LLLL.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_LPI(p3:l3x;4;1024;1.221613955826318e-14;12.00000000000002;l3y;4;1024;1.221613955826318e-14;12.00000000000002;l3z;4;1024;1.221613955826318e-14;12.00000000000002;d3;3;192;4.886390771174922e-015;6.000000000000006) 4 | implicitPoint3D_LPI(p4:l4x;4;1024;1.221613955826318e-14;12.00000000000002;l4y;4;1024;1.221613955826318e-14;12.00000000000002;l4z;4;1024;1.221613955826318e-14;12.00000000000002;d4;3;192;4.886390771174922e-015;6.000000000000006) 5 | 6 | d1p4x = d1 * l4x 7 | d1p4y = d1 * l4y 8 | d1p4z = d1 * l4z 9 | d2p4x = d2 * l4x 10 | d2p4y = d2 * l4y 11 | d2p4z = d2 * l4z 12 | d3p4x = d3 * l4x 13 | d3p4y = d3 * l4y 14 | d3p4z = d3 * l4z 15 | 16 | d4l1x = d4 * l1x 17 | d4l1y = d4 * l1y 18 | d4l1z = d4 * l1z 19 | d4l2x = d4 * l2x 20 | d4l2y = d4 * l2y 21 | d4l2z = d4 * l2z 22 | d4l3x = d4 * l3x 23 | d4l3y = d4 * l3y 24 | d4l3z = d4 * l3z 25 | 26 | p1p4x = d4l1x - d1p4x 27 | p1p4y = d4l1y - d1p4y 28 | p1p4z = d4l1z - d1p4z 29 | p2p4x = d4l2x - d2p4x 30 | p2p4y = d4l2y - d2p4y 31 | p2p4z = d4l2z - d2p4z 32 | p3p4x = d4l3x - d3p4x 33 | p3p4y = d4l3y - d3p4y 34 | p3p4z = d4l3z - d3p4z 35 | 36 | tmc_a = p1p4x * p2p4y 37 | tmc_b = p1p4y * p2p4x 38 | m01 = tmc_a - tmc_b 39 | tmi_a = p1p4x * p2p4z 40 | tmi_b = p1p4z * p2p4x 41 | m02 = tmi_a - tmi_b 42 | tma_a = p1p4y * p2p4z 43 | tma_b = p1p4z * p2p4y 44 | m12 = tma_a - tma_b 45 | mt1 = m01 * p3p4z 46 | mt2 = m02 * p3p4y 47 | mt3 = m12 * p3p4x 48 | mtt = mt2 - mt1 49 | m012 = mtt - mt3 50 | 51 | // SIGN d1 d2 d3 d4 52 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient3d_indirect_LLLT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_LPI(p3:l3x;4;1024;1.221613955826318e-14;12.00000000000002;l3y;4;1024;1.221613955826318e-14;12.00000000000002;l3z;4;1024;1.221613955826318e-14;12.00000000000002;d3;3;192;4.886390771174922e-015;6.000000000000006) 4 | implicitPoint3D_TPI(p4:l4x;7;1024;2.931951556539587e-013;144.0000000000005;l4y;7;1024;2.931951556539587e-013;144.0000000000005;l4z;7;1024;2.931951556539587e-013;144.0000000000005;d4;6;1024;8.706837334449009e-014;48.00000000000014) 5 | 6 | d1p4x = d1 * l4x 7 | d1p4y = d1 * l4y 8 | d1p4z = d1 * l4z 9 | d2p4x = d2 * l4x 10 | d2p4y = d2 * l4y 11 | d2p4z = d2 * l4z 12 | d3p4x = d3 * l4x 13 | d3p4y = d3 * l4y 14 | d3p4z = d3 * l4z 15 | 16 | d4l1x = d4 * l1x 17 | d4l1y = d4 * l1y 18 | d4l1z = d4 * l1z 19 | d4l2x = d4 * l2x 20 | d4l2y = d4 * l2y 21 | d4l2z = d4 * l2z 22 | d4l3x = d4 * l3x 23 | d4l3y = d4 * l3y 24 | d4l3z = d4 * l3z 25 | 26 | p1p4x = d4l1x - d1p4x 27 | p1p4y = d4l1y - d1p4y 28 | p1p4z = d4l1z - d1p4z 29 | p2p4x = d4l2x - d2p4x 30 | p2p4y = d4l2y - d2p4y 31 | p2p4z = d4l2z - d2p4z 32 | p3p4x = d4l3x - d3p4x 33 | p3p4y = d4l3y - d3p4y 34 | p3p4z = d4l3z - d3p4z 35 | 36 | tmc_a = p1p4x * p2p4y 37 | tmc_b = p1p4y * p2p4x 38 | m01 = tmc_a - tmc_b 39 | tmi_a = p1p4x * p2p4z 40 | tmi_b = p1p4z * p2p4x 41 | m02 = tmi_a - tmi_b 42 | tma_a = p1p4y * p2p4z 43 | tma_b = p1p4z * p2p4y 44 | m12 = tma_a - tma_b 45 | mt1 = m01 * p3p4z 46 | mt2 = m02 * p3p4y 47 | mt3 = m12 * p3p4x 48 | mtt = mt2 - mt1 49 | m012 = mtt - mt3 50 | 51 | // SIGN d1 d2 d3 d4 52 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient3d_indirect_LLTE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | p4x p4y p4z 5 | 6 | d1p4x = d1 * p4x 7 | d1p4y = d1 * p4y 8 | d1p4z = d1 * p4z 9 | d2p4x = d2 * p4x 10 | d2p4y = d2 * p4y 11 | d2p4z = d2 * p4z 12 | d3p4x = d3 * p4x 13 | d3p4y = d3 * p4y 14 | d3p4z = d3 * p4z 15 | 16 | p1p4x = l1x - d1p4x 17 | p1p4y = l1y - d1p4y 18 | p1p4z = l1z - d1p4z 19 | p2p4x = l2x - d2p4x 20 | p2p4y = l2y - d2p4y 21 | p2p4z = l2z - d2p4z 22 | p3p4x = l3x - d3p4x 23 | p3p4y = l3y - d3p4y 24 | p3p4z = l3z - d3p4z 25 | 26 | tmc_a = p1p4x * p2p4y 27 | tmc_b = p1p4y * p2p4x 28 | m01 = tmc_a - tmc_b 29 | tmi_a = p1p4x * p2p4z 30 | tmi_b = p1p4z * p2p4x 31 | m02 = tmi_a - tmi_b 32 | tma_a = p1p4y * p2p4z 33 | tma_b = p1p4z * p2p4y 34 | m12 = tma_a - tma_b 35 | mt1 = m01 * p3p4z 36 | mt2 = m02 * p3p4y 37 | mt3 = m12 * p3p4x 38 | mtt = mt2 - mt1 39 | m012 = mtt - mt3 40 | 41 | // SIGN d1 d2 d3 42 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient3d_indirect_LLTT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_LPI(p2:l2x;4;1024;1.221613955826318e-14;12.00000000000002;l2y;4;1024;1.221613955826318e-14;12.00000000000002;l2z;4;1024;1.221613955826318e-14;12.00000000000002;d2;3;192;4.886390771174922e-015;6.000000000000006) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | implicitPoint3D_TPI(p4:l4x;7;1024;2.931951556539587e-013;144.0000000000005;l4y;7;1024;2.931951556539587e-013;144.0000000000005;l4z;7;1024;2.931951556539587e-013;144.0000000000005;d4;6;1024;8.706837334449009e-014;48.00000000000014) 5 | 6 | d1p4x = d1 * l4x 7 | d1p4y = d1 * l4y 8 | d1p4z = d1 * l4z 9 | d2p4x = d2 * l4x 10 | d2p4y = d2 * l4y 11 | d2p4z = d2 * l4z 12 | d3p4x = d3 * l4x 13 | d3p4y = d3 * l4y 14 | d3p4z = d3 * l4z 15 | 16 | d4l1x = d4 * l1x 17 | d4l1y = d4 * l1y 18 | d4l1z = d4 * l1z 19 | d4l2x = d4 * l2x 20 | d4l2y = d4 * l2y 21 | d4l2z = d4 * l2z 22 | d4l3x = d4 * l3x 23 | d4l3y = d4 * l3y 24 | d4l3z = d4 * l3z 25 | 26 | p1p4x = d4l1x - d1p4x 27 | p1p4y = d4l1y - d1p4y 28 | p1p4z = d4l1z - d1p4z 29 | p2p4x = d4l2x - d2p4x 30 | p2p4y = d4l2y - d2p4y 31 | p2p4z = d4l2z - d2p4z 32 | p3p4x = d4l3x - d3p4x 33 | p3p4y = d4l3y - d3p4y 34 | p3p4z = d4l3z - d3p4z 35 | 36 | tmc_a = p1p4x * p2p4y 37 | tmc_b = p1p4y * p2p4x 38 | m01 = tmc_a - tmc_b 39 | tmi_a = p1p4x * p2p4z 40 | tmi_b = p1p4z * p2p4x 41 | m02 = tmi_a - tmi_b 42 | tma_a = p1p4y * p2p4z 43 | tma_b = p1p4z * p2p4y 44 | m12 = tma_a - tma_b 45 | mt1 = m01 * p3p4z 46 | mt2 = m02 * p3p4y 47 | mt3 = m12 * p3p4x 48 | mtt = mt2 - mt1 49 | m012 = mtt - mt3 50 | 51 | // SIGN d1 d2 d3 d4 52 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient3d_indirect_LTEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | p3x p3y p3z 4 | p4x p4y p4z 5 | 6 | d1p4x = d1 * p4x 7 | d1p4y = d1 * p4y 8 | d1p4z = d1 * p4z 9 | d2p4x = d2 * p4x 10 | d2p4y = d2 * p4y 11 | d2p4z = d2 * p4z 12 | 13 | p1p4x = l1x - d1p4x 14 | p1p4y = l1y - d1p4y 15 | p1p4z = l1z - d1p4z 16 | p2p4x = l2x - d2p4x 17 | p2p4y = l2y - d2p4y 18 | p2p4z = l2z - d2p4z 19 | p3p4x = p3x - p4x 20 | p3p4y = p3y - p4y 21 | p3p4z = p3z - p4z 22 | 23 | tmc_a = p1p4x * p2p4y 24 | tmc_b = p1p4y * p2p4x 25 | m01 = tmc_a - tmc_b 26 | tmi_a = p1p4x * p2p4z 27 | tmi_b = p1p4z * p2p4x 28 | m02 = tmi_a - tmi_b 29 | tma_a = p1p4y * p2p4z 30 | tma_b = p1p4z * p2p4y 31 | m12 = tma_a - tma_b 32 | mt1 = m01 * p3p4z 33 | mt2 = m02 * p3p4y 34 | mt3 = m12 * p3p4x 35 | mtt = mt2 - mt1 36 | m012 = mtt - mt3 37 | 38 | // SIGN d1 d2 39 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient3d_indirect_LTTE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | p4x p4y p4z 5 | 6 | d1p4x = d1 * p4x 7 | d1p4y = d1 * p4y 8 | d1p4z = d1 * p4z 9 | d2p4x = d2 * p4x 10 | d2p4y = d2 * p4y 11 | d2p4z = d2 * p4z 12 | d3p4x = d3 * p4x 13 | d3p4y = d3 * p4y 14 | d3p4z = d3 * p4z 15 | 16 | p1p4x = l1x - d1p4x 17 | p1p4y = l1y - d1p4y 18 | p1p4z = l1z - d1p4z 19 | p2p4x = l2x - d2p4x 20 | p2p4y = l2y - d2p4y 21 | p2p4z = l2z - d2p4z 22 | p3p4x = l3x - d3p4x 23 | p3p4y = l3y - d3p4y 24 | p3p4z = l3z - d3p4z 25 | 26 | tmc_a = p1p4x * p2p4y 27 | tmc_b = p1p4y * p2p4x 28 | m01 = tmc_a - tmc_b 29 | tmi_a = p1p4x * p2p4z 30 | tmi_b = p1p4z * p2p4x 31 | m02 = tmi_a - tmi_b 32 | tma_a = p1p4y * p2p4z 33 | tma_b = p1p4z * p2p4y 34 | m12 = tma_a - tma_b 35 | mt1 = m01 * p3p4z 36 | mt2 = m02 * p3p4y 37 | mt3 = m12 * p3p4x 38 | mtt = mt2 - mt1 39 | m012 = mtt - mt3 40 | 41 | // SIGN d1 d2 d3 42 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient3d_indirect_LTTT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_LPI(p1:l1x;4;1024;1.221613955826318e-14;12.00000000000002;l1y;4;1024;1.221613955826318e-14;12.00000000000002;l1z;4;1024;1.221613955826318e-14;12.00000000000002;d1;3;192;4.886390771174922e-015;6.000000000000006) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | implicitPoint3D_TPI(p4:l4x;7;1024;2.931951556539587e-013;144.0000000000005;l4y;7;1024;2.931951556539587e-013;144.0000000000005;l4z;7;1024;2.931951556539587e-013;144.0000000000005;d4;6;1024;8.706837334449009e-014;48.00000000000014) 5 | 6 | d1p4x = d1 * l4x 7 | d1p4y = d1 * l4y 8 | d1p4z = d1 * l4z 9 | d2p4x = d2 * l4x 10 | d2p4y = d2 * l4y 11 | d2p4z = d2 * l4z 12 | d3p4x = d3 * l4x 13 | d3p4y = d3 * l4y 14 | d3p4z = d3 * l4z 15 | 16 | d4l1x = d4 * l1x 17 | d4l1y = d4 * l1y 18 | d4l1z = d4 * l1z 19 | d4l2x = d4 * l2x 20 | d4l2y = d4 * l2y 21 | d4l2z = d4 * l2z 22 | d4l3x = d4 * l3x 23 | d4l3y = d4 * l3y 24 | d4l3z = d4 * l3z 25 | 26 | p1p4x = d4l1x - d1p4x 27 | p1p4y = d4l1y - d1p4y 28 | p1p4z = d4l1z - d1p4z 29 | p2p4x = d4l2x - d2p4x 30 | p2p4y = d4l2y - d2p4y 31 | p2p4z = d4l2z - d2p4z 32 | p3p4x = d4l3x - d3p4x 33 | p3p4y = d4l3y - d3p4y 34 | p3p4z = d4l3z - d3p4z 35 | 36 | tmc_a = p1p4x * p2p4y 37 | tmc_b = p1p4y * p2p4x 38 | m01 = tmc_a - tmc_b 39 | tmi_a = p1p4x * p2p4z 40 | tmi_b = p1p4z * p2p4x 41 | m02 = tmi_a - tmi_b 42 | tma_a = p1p4y * p2p4z 43 | tma_b = p1p4z * p2p4y 44 | m12 = tma_a - tma_b 45 | mt1 = m01 * p3p4z 46 | mt2 = m02 * p3p4y 47 | mt3 = m12 * p3p4x 48 | mtt = mt2 - mt1 49 | m012 = mtt - mt3 50 | 51 | // SIGN d1 d2 d3 d4 52 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient3d_indirect_TEEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | ax ay az bx by bz cx cy cz 3 | 4 | dcx = d1 * cx 5 | dcy = d1 * cy 6 | dcz = d1 * cz 7 | ix_cx = l1x - dcx 8 | iy_cy = l1y - dcy 9 | ax_cx = ax - cx 10 | ay_cy = ay - cy 11 | az_cz = az - cz 12 | iz_cz = l1z - dcz 13 | bx_cx = bx - cx 14 | by_cy = by - cy 15 | bz_cz = bz - cz 16 | tmc_a = ix_cx * ay_cy 17 | tmc_b = iy_cy * ax_cx 18 | m01 = tmc_a - tmc_b 19 | tmi_a = ix_cx * az_cz 20 | tmi_b = iz_cz * ax_cx 21 | m02 = tmi_a - tmi_b 22 | tma_a = iy_cy * az_cz 23 | tma_b = iz_cz * ay_cy 24 | m12 = tma_a - tma_b 25 | mt1 = m01 * bz_cz 26 | mt2 = m02 * by_cy 27 | mt3 = m12 * bx_cx 28 | mtt = mt2 - mt1 29 | m012 = mtt - mt3 30 | 31 | // SIGN d1 32 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient3d_indirect_TTEE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | p3x p3y p3z 4 | p4x p4y p4z 5 | 6 | d1p4x = d1 * p4x 7 | d1p4y = d1 * p4y 8 | d1p4z = d1 * p4z 9 | d2p4x = d2 * p4x 10 | d2p4y = d2 * p4y 11 | d2p4z = d2 * p4z 12 | 13 | p1p4x = l1x - d1p4x 14 | p1p4y = l1y - d1p4y 15 | p1p4z = l1z - d1p4z 16 | p2p4x = l2x - d2p4x 17 | p2p4y = l2y - d2p4y 18 | p2p4z = l2z - d2p4z 19 | p3p4x = p3x - p4x 20 | p3p4y = p3y - p4y 21 | p3p4z = p3z - p4z 22 | 23 | tmc_a = p1p4x * p2p4y 24 | tmc_b = p1p4y * p2p4x 25 | m01 = tmc_a - tmc_b 26 | tmi_a = p1p4x * p2p4z 27 | tmi_b = p1p4z * p2p4x 28 | m02 = tmi_a - tmi_b 29 | tma_a = p1p4y * p2p4z 30 | tma_b = p1p4z * p2p4y 31 | m12 = tma_a - tma_b 32 | mt1 = m01 * p3p4z 33 | mt2 = m02 * p3p4y 34 | mt3 = m12 * p3p4x 35 | mtt = mt2 - mt1 36 | m012 = mtt - mt3 37 | 38 | // SIGN d1 d2 39 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient3d_indirect_TTTE.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | p4x p4y p4z 5 | 6 | d1p4x = d1 * p4x 7 | d1p4y = d1 * p4y 8 | d1p4z = d1 * p4z 9 | d2p4x = d2 * p4x 10 | d2p4y = d2 * p4y 11 | d2p4z = d2 * p4z 12 | d3p4x = d3 * p4x 13 | d3p4y = d3 * p4y 14 | d3p4z = d3 * p4z 15 | 16 | p1p4x = l1x - d1p4x 17 | p1p4y = l1y - d1p4y 18 | p1p4z = l1z - d1p4z 19 | p2p4x = l2x - d2p4x 20 | p2p4y = l2y - d2p4y 21 | p2p4z = l2z - d2p4z 22 | p3p4x = l3x - d3p4x 23 | p3p4y = l3y - d3p4y 24 | p3p4z = l3z - d3p4z 25 | 26 | tmc_a = p1p4x * p2p4y 27 | tmc_b = p1p4y * p2p4x 28 | m01 = tmc_a - tmc_b 29 | tmi_a = p1p4x * p2p4z 30 | tmi_b = p1p4z * p2p4x 31 | m02 = tmi_a - tmi_b 32 | tma_a = p1p4y * p2p4z 33 | tma_b = p1p4z * p2p4y 34 | m12 = tma_a - tma_b 35 | mt1 = m01 * p3p4z 36 | mt2 = m02 * p3p4y 37 | mt3 = m12 * p3p4x 38 | mtt = mt2 - mt1 39 | m012 = mtt - mt3 40 | 41 | // SIGN d1 d2 d3 42 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect-old/orient3d_indirect_TTTT.txt: -------------------------------------------------------------------------------- 1 | implicitPoint3D_TPI(p1:l1x;7;1024;2.931951556539587e-013;144.0000000000005;l1y;7;1024;2.931951556539587e-013;144.0000000000005;l1z;7;1024;2.931951556539587e-013;144.0000000000005;d1;6;1024;8.706837334449009e-014;48.00000000000014) 2 | implicitPoint3D_TPI(p2:l2x;7;1024;2.931951556539587e-013;144.0000000000005;l2y;7;1024;2.931951556539587e-013;144.0000000000005;l2z;7;1024;2.931951556539587e-013;144.0000000000005;d2;6;1024;8.706837334449009e-014;48.00000000000014) 3 | implicitPoint3D_TPI(p3:l3x;7;1024;2.931951556539587e-013;144.0000000000005;l3y;7;1024;2.931951556539587e-013;144.0000000000005;l3z;7;1024;2.931951556539587e-013;144.0000000000005;d3;6;1024;8.706837334449009e-014;48.00000000000014) 4 | implicitPoint3D_TPI(p4:l4x;7;1024;2.931951556539587e-013;144.0000000000005;l4y;7;1024;2.931951556539587e-013;144.0000000000005;l4z;7;1024;2.931951556539587e-013;144.0000000000005;d4;6;1024;8.706837334449009e-014;48.00000000000014) 5 | 6 | d1p4x = d1 * l4x 7 | d1p4y = d1 * l4y 8 | d1p4z = d1 * l4z 9 | d2p4x = d2 * l4x 10 | d2p4y = d2 * l4y 11 | d2p4z = d2 * l4z 12 | d3p4x = d3 * l4x 13 | d3p4y = d3 * l4y 14 | d3p4z = d3 * l4z 15 | 16 | d4l1x = d4 * l1x 17 | d4l1y = d4 * l1y 18 | d4l1z = d4 * l1z 19 | d4l2x = d4 * l2x 20 | d4l2y = d4 * l2y 21 | d4l2z = d4 * l2z 22 | d4l3x = d4 * l3x 23 | d4l3y = d4 * l3y 24 | d4l3z = d4 * l3z 25 | 26 | p1p4x = d4l1x - d1p4x 27 | p1p4y = d4l1y - d1p4y 28 | p1p4z = d4l1z - d1p4z 29 | p2p4x = d4l2x - d2p4x 30 | p2p4y = d4l2y - d2p4y 31 | p2p4z = d4l2z - d2p4z 32 | p3p4x = d4l3x - d3p4x 33 | p3p4y = d4l3y - d3p4y 34 | p3p4z = d4l3z - d3p4z 35 | 36 | tmc_a = p1p4x * p2p4y 37 | tmc_b = p1p4y * p2p4x 38 | m01 = tmc_a - tmc_b 39 | tmi_a = p1p4x * p2p4z 40 | tmi_b = p1p4z * p2p4x 41 | m02 = tmi_a - tmi_b 42 | tma_a = p1p4y * p2p4z 43 | tma_b = p1p4z * p2p4y 44 | m12 = tma_a - tma_b 45 | mt1 = m01 * p3p4z 46 | mt2 = m02 * p3p4y 47 | mt3 = m12 * p3p4x 48 | mtt = mt2 - mt1 49 | m012 = mtt - mt3 50 | 51 | // SIGN d1 d2 d3 d4 52 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/dotProductSign2D_EEI.txt: -------------------------------------------------------------------------------- 1 | // Sign of (p-q).dot(r-q) 2 | px py rx ry 3 | genericPoint(q:lqx,lqy,dq) 4 | pxq = px * dq 5 | pyq = py * dq 6 | rxq = rx * dq 7 | ryq = ry * dq 8 | lx = pxq - lqx 9 | ly = pyq - lqy 10 | gx = rxq - lqx 11 | gy = ryq - lqy 12 | dx = lx * gx 13 | dy = ly * gy 14 | d = dx + dy 15 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/dotProductSign2D_IEE.txt: -------------------------------------------------------------------------------- 1 | // Sign of (p-q).dot(r-q) 2 | genericPoint(p:lpx,lpy,dp) 3 | rx ry qx qy 4 | qxd = qx * dp 5 | qyd = qy * dp 6 | lx = lpx - qxd 7 | ly = lpy - qyd 8 | gx = rx - qx 9 | gy = ry - qy 10 | dx = lx * gx 11 | dy = ly * gy 12 | d = dx + dy 13 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/dotProductSign2D_IEI.txt: -------------------------------------------------------------------------------- 1 | // Sign of (p-q).dot(r-q) 2 | genericPoint(p:lpx,lpy,dp) 3 | rx ry 4 | genericPoint(q:lqx,lqy,dq) 5 | dqp = dq * dp 6 | pxq = lpx * dqp 7 | pyq = lpy * dqp 8 | rxq = rx * dq 9 | ryq = ry * dq 10 | lqxd = lqx * dp 11 | lqyd = lqy * dp 12 | lx = pxq - lqxd 13 | ly = pyq - lqyd 14 | gx = rxq - lqx 15 | gy = ryq - lqy 16 | dx = lx * gx 17 | dy = ly * gy 18 | d = dx + dy 19 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/dotProductSign2D_IIE.txt: -------------------------------------------------------------------------------- 1 | // Sign of (p-q).dot(r-q) 2 | genericPoint(p:lpx,lpy,dp) 3 | genericPoint(r:lrx,lry,dr) 4 | qx qy 5 | qxd = qx * dp 6 | qyd = qy * dp 7 | lx = lpx - qxd 8 | ly = lpy - qyd 9 | qxr = qx * dr 10 | qyr = qy * dr 11 | gx = lrx - qxr 12 | gy = lry - qyr 13 | dx = lx * gx 14 | dy = ly * gy 15 | d = dx + dy 16 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/dotProductSign2D_III.txt: -------------------------------------------------------------------------------- 1 | // Sign of (p-q).dot(r-q) 2 | genericPoint(p:lpx,lpy,dp) 3 | genericPoint(r:lrx,lry,dr) 4 | genericPoint(q:lqx,lqy,dq) 5 | qxd = lqx * dp 6 | qyd = lqy * dp 7 | lpxq = lpx * dq 8 | lpyq = lpy * dq 9 | lx = lpxq - qxd 10 | ly = lpyq - qyd 11 | qxr = lqx * dr 12 | qyr = lqy * dr 13 | lrxq = lrx * dq 14 | lryq = lry * dq 15 | gx = lrxq - qxr 16 | gy = lryq - qyr 17 | dx = lx * gx 18 | dy = ly * gy 19 | d = dx + dy 20 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/dotProductSign3D_EEI.txt: -------------------------------------------------------------------------------- 1 | // Sign of (p-q).dot(r-q) 2 | px py pz rx ry rz 3 | genericPoint(q:lqx,lqy,lqz,dq) 4 | pxq = px * dq 5 | pyq = py * dq 6 | pzq = pz * dq 7 | rxq = rx * dq 8 | ryq = ry * dq 9 | rzq = rz * dq 10 | lx = pxq - lqx 11 | ly = pyq - lqy 12 | lz = pzq - lqz 13 | gx = rxq - lqx 14 | gy = ryq - lqy 15 | gz = rzq - lqz 16 | dx = lx * gx 17 | dy = ly * gy 18 | dz = lz * gz 19 | d1 = dx + dy 20 | d = d1 + dz 21 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/dotProductSign3D_IEE.txt: -------------------------------------------------------------------------------- 1 | // Sign of (p-q).dot(r-q) 2 | genericPoint(p:lpx,lpy,lpz,dp) 3 | rx ry rz qx qy qz 4 | qxd = qx * dp 5 | qyd = qy * dp 6 | qzd = qz * dp 7 | lx = lpx - qxd 8 | ly = lpy - qyd 9 | lz = lpz - qzd 10 | gx = rx - qx 11 | gy = ry - qy 12 | gz = rz - qz 13 | dx = lx * gx 14 | dy = ly * gy 15 | dz = lz * gz 16 | d1 = dx + dy 17 | d = d1 + dz 18 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/dotProductSign3D_IEI.txt: -------------------------------------------------------------------------------- 1 | // Sign of (p-q).dot(r-q) 2 | genericPoint(p:lpx,lpy,lpz,dp) 3 | rx ry rz 4 | genericPoint(q:lqx,lqy,lqz,dq) 5 | dqp = dq * dp 6 | pxq = lpx * dqp 7 | pyq = lpy * dqp 8 | pzq = lpz * dqp 9 | rxq = rx * dq 10 | ryq = ry * dq 11 | rzq = rz * dq 12 | lqxd = lqx * dp 13 | lqyd = lqy * dp 14 | lqzd = lqz * dp 15 | lx = pxq - lqxd 16 | ly = pyq - lqyd 17 | lz = pzq - lqzd 18 | gx = rxq - lqx 19 | gy = ryq - lqy 20 | gz = rzq - lqz 21 | dx = lx * gx 22 | dy = ly * gy 23 | dz = lz * gz 24 | d1 = dx + dy 25 | d = d1 + dz 26 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/dotProductSign3D_IIE.txt: -------------------------------------------------------------------------------- 1 | // Sign of (p-q).dot(r-q) 2 | genericPoint(p:lpx,lpy,lpz,dp) 3 | genericPoint(r:lrx,lry,lrz,dr) 4 | qx qy qz 5 | qxd = qx * dp 6 | qyd = qy * dp 7 | qzd = qz * dp 8 | lx = lpx - qxd 9 | ly = lpy - qyd 10 | lz = lpz - qzd 11 | qxr = qx * dr 12 | qyr = qy * dr 13 | qzr = qz * dr 14 | gx = lrx - qxr 15 | gy = lry - qyr 16 | gz = lrz - qzr 17 | dx = lx * gx 18 | dy = ly * gy 19 | dz = lz * gz 20 | d1 = dx + dy 21 | d = d1 + dz 22 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/dotProductSign3D_III.txt: -------------------------------------------------------------------------------- 1 | // Sign of (p-q).dot(r-q) 2 | genericPoint(p:lpx,lpy,lpz,dp) 3 | genericPoint(r:lrx,lry,lrz,dr) 4 | genericPoint(q:lqx,lqy,lqz,dq) 5 | qxd = lqx * dp 6 | qyd = lqy * dp 7 | qzd = lqz * dp 8 | lpxq = lpx * dq 9 | lpyq = lpy * dq 10 | lpzq = lpz * dq 11 | lx = lpxq - qxd 12 | ly = lpyq - qyd 13 | lz = lpzq - qzd 14 | qxr = lqx * dr 15 | qyr = lqy * dr 16 | qzr = lqz * dr 17 | lrxq = lrx * dq 18 | lryq = lry * dq 19 | lrzq = lrz * dq 20 | gx = lrxq - qxr 21 | gy = lryq - qyr 22 | gz = lrzq - qzr 23 | dx = lx * gx 24 | dy = ly * gy 25 | dz = lz * gz 26 | d1 = dx + dy 27 | d = d1 + dz 28 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/inGabrielSphere_EIEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(a:l2x,l2y,l2z,d2) 2 | qx qy qz bx by bz cx cy cz 3 | 4 | bxd2 = bx * d2 5 | byd2 = by * d2 6 | bzd2 = bz * d2 7 | cxd2 = cx * d2 8 | cyd2 = cy * d2 9 | czd2 = cz * d2 10 | qxd2 = qx * d2 11 | qyd2 = qy * d2 12 | qzd2 = qz * d2 13 | 14 | bax = bxd2 - l2x 15 | bay = byd2 - l2y 16 | baz = bzd2 - l2z 17 | cax = cxd2 - l2x 18 | cay = cyd2 - l2y 19 | caz = czd2 - l2z 20 | qax = qxd2 - l2x 21 | qay = qyd2 - l2y 22 | qaz = qzd2 - l2z 23 | 24 | cx1 = bay * caz 25 | cx2 = baz * cay 26 | crossbcx = cx1 - cx2 27 | cy1 = baz * cax 28 | cy2 = bax * caz 29 | crossbcy = cy1 - cy2 30 | cz1 = bax * cay 31 | cz2 = bay * cax 32 | crossbcz = cz1 - cz2 33 | 34 | ba2x = bax * bax 35 | ba2y = bay * bay 36 | ba2z = baz * baz 37 | ba2t = ba2x + ba2y 38 | ba2 = ba2t + ba2z 39 | 40 | ca2x = cax * cax 41 | ca2y = cay * cay 42 | ca2z = caz * caz 43 | ca2t = ca2x + ca2y 44 | ca2 = ca2t + ca2z 45 | 46 | calx = cax * ba2 47 | caly = cay * ba2 48 | calz = caz * ba2 49 | balx = bax * ca2 50 | baly = bay * ca2 51 | balz = baz * ca2 52 | abcx = calx - balx 53 | abcy = caly - baly 54 | abcz = calz - balz 55 | 56 | kx1 = abcy * crossbcz 57 | kx2 = abcz * crossbcy 58 | ccax = kx1 - kx2 59 | ky1 = abcz * crossbcx 60 | ky2 = abcx * crossbcz 61 | ccay = ky1 - ky2 62 | kz1 = abcx * crossbcy 63 | kz2 = abcy * crossbcx 64 | ccaz = kz1 - kz2 65 | 66 | cr2x = crossbcx * crossbcx 67 | cr2y = crossbcy * crossbcy 68 | cr2z = crossbcz * crossbcz 69 | cr2t = cr2x + cr2y 70 | c2 = cr2t + cr2z 71 | 72 | c22 = 2 * c2 73 | qa1x = qax * c22 74 | qa1y = qay * c22 75 | qa1z = qaz * c22 76 | qa2x = qa1x - ccax 77 | qa2y = qa1y - ccay 78 | qa2z = qa1z - ccaz 79 | 80 | r1x = qa2x * qa2x 81 | r1y = qa2y * qa2y 82 | r1z = qa2z * qa2z 83 | r1t = r1x + r1y 84 | r1 = r1t + r1z 85 | 86 | r2x = ccax * ccax 87 | r2y = ccay * ccay 88 | r2z = ccaz * ccaz 89 | r2t = r2x + r2y 90 | r2 = r2t + r2z 91 | 92 | ret = r1 - r2 93 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/inGabrielSphere_EIIE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(a:l2x,l2y,l2z,d2) 2 | genericPoint(b:l3x,l3y,l3z,d3) 3 | qx qy qz cx cy cz 4 | 5 | d23 = d2 * d3 6 | 7 | bxd2 = l3x * d2 8 | byd2 = l3y * d2 9 | bzd2 = l3z * d2 10 | cxd2 = cx * d23 11 | cyd2 = cy * d23 12 | czd2 = cz * d23 13 | qxd2 = qx * d23 14 | qyd2 = qy * d23 15 | qzd2 = qz * d23 16 | l2x3 = l2x * d3 17 | l2y3 = l2y * d3 18 | l2z3 = l2z * d3 19 | 20 | bax = bxd2 - l2x3 21 | bay = byd2 - l2y3 22 | baz = bzd2 - l2z3 23 | cax = cxd2 - l2x3 24 | cay = cyd2 - l2y3 25 | caz = czd2 - l2z3 26 | qax = qxd2 - l2x3 27 | qay = qyd2 - l2y3 28 | qaz = qzd2 - l2z3 29 | 30 | cx1 = bay * caz 31 | cx2 = baz * cay 32 | crossbcx = cx1 - cx2 33 | cy1 = baz * cax 34 | cy2 = bax * caz 35 | crossbcy = cy1 - cy2 36 | cz1 = bax * cay 37 | cz2 = bay * cax 38 | crossbcz = cz1 - cz2 39 | 40 | ba2x = bax * bax 41 | ba2y = bay * bay 42 | ba2z = baz * baz 43 | ba2t = ba2x + ba2y 44 | ba2 = ba2t + ba2z 45 | 46 | ca2x = cax * cax 47 | ca2y = cay * cay 48 | ca2z = caz * caz 49 | ca2t = ca2x + ca2y 50 | ca2 = ca2t + ca2z 51 | 52 | calx = cax * ba2 53 | caly = cay * ba2 54 | calz = caz * ba2 55 | balx = bax * ca2 56 | baly = bay * ca2 57 | balz = baz * ca2 58 | abcx = calx - balx 59 | abcy = caly - baly 60 | abcz = calz - balz 61 | 62 | kx1 = abcy * crossbcz 63 | kx2 = abcz * crossbcy 64 | ccax = kx1 - kx2 65 | ky1 = abcz * crossbcx 66 | ky2 = abcx * crossbcz 67 | ccay = ky1 - ky2 68 | kz1 = abcx * crossbcy 69 | kz2 = abcy * crossbcx 70 | ccaz = kz1 - kz2 71 | 72 | cr2x = crossbcx * crossbcx 73 | cr2y = crossbcy * crossbcy 74 | cr2z = crossbcz * crossbcz 75 | cr2t = cr2x + cr2y 76 | c2 = cr2t + cr2z 77 | 78 | c22 = 2 * c2 79 | qa1x = qax * c22 80 | qa1y = qay * c22 81 | qa1z = qaz * c22 82 | qa2x = qa1x - ccax 83 | qa2y = qa1y - ccay 84 | qa2z = qa1z - ccaz 85 | 86 | r1x = qa2x * qa2x 87 | r1y = qa2y * qa2y 88 | r1z = qa2z * qa2z 89 | r1t = r1x + r1y 90 | r1 = r1t + r1z 91 | 92 | r2x = ccax * ccax 93 | r2y = ccay * ccay 94 | r2z = ccaz * ccaz 95 | r2t = r2x + r2y 96 | r2 = r2t + r2z 97 | 98 | ret = r1 - r2 99 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/inGabrielSphere_EIII.txt: -------------------------------------------------------------------------------- 1 | genericPoint(a:l2x,l2y,l2z,d2) 2 | genericPoint(b:l3x,l3y,l3z,d3) 3 | genericPoint(c:l4x,l4y,l4z,d4) 4 | qx qy qz 5 | 6 | d23 = d2 * d3 7 | d24 = d2 * d4 8 | d34 = d3 * d4 9 | d234 = d23 * d4 10 | 11 | bxd2 = l3x * d24 12 | byd2 = l3y * d24 13 | bzd2 = l3z * d24 14 | cxd2 = l4x * d23 15 | cyd2 = l4y * d23 16 | czd2 = l4z * d23 17 | qxd2 = qx * d234 18 | qyd2 = qy * d234 19 | qzd2 = qz * d234 20 | 21 | l2xm = l2x * d34 22 | l2ym = l2y * d34 23 | l2zm = l2z * d34 24 | 25 | bax = bxd2 - l2xm 26 | bay = byd2 - l2ym 27 | baz = bzd2 - l2zm 28 | cax = cxd2 - l2xm 29 | cay = cyd2 - l2ym 30 | caz = czd2 - l2zm 31 | qax = qxd2 - l2xm 32 | qay = qyd2 - l2ym 33 | qaz = qzd2 - l2zm 34 | 35 | cx1 = bay * caz 36 | cx2 = baz * cay 37 | crossbcx = cx1 - cx2 38 | cy1 = baz * cax 39 | cy2 = bax * caz 40 | crossbcy = cy1 - cy2 41 | cz1 = bax * cay 42 | cz2 = bay * cax 43 | crossbcz = cz1 - cz2 44 | 45 | ba2x = bax * bax 46 | ba2y = bay * bay 47 | ba2z = baz * baz 48 | ba2t = ba2x + ba2y 49 | ba2 = ba2t + ba2z 50 | 51 | ca2x = cax * cax 52 | ca2y = cay * cay 53 | ca2z = caz * caz 54 | ca2t = ca2x + ca2y 55 | ca2 = ca2t + ca2z 56 | 57 | calx = cax * ba2 58 | caly = cay * ba2 59 | calz = caz * ba2 60 | balx = bax * ca2 61 | baly = bay * ca2 62 | balz = baz * ca2 63 | abcx = calx - balx 64 | abcy = caly - baly 65 | abcz = calz - balz 66 | 67 | kx1 = abcy * crossbcz 68 | kx2 = abcz * crossbcy 69 | ccax = kx1 - kx2 70 | ky1 = abcz * crossbcx 71 | ky2 = abcx * crossbcz 72 | ccay = ky1 - ky2 73 | kz1 = abcx * crossbcy 74 | kz2 = abcy * crossbcx 75 | ccaz = kz1 - kz2 76 | 77 | cr2x = crossbcx * crossbcx 78 | cr2y = crossbcy * crossbcy 79 | cr2z = crossbcz * crossbcz 80 | cr2t = cr2x + cr2y 81 | c2 = cr2t + cr2z 82 | 83 | c22 = 2 * c2 84 | qa1x = qax * c22 85 | qa1y = qay * c22 86 | qa1z = qaz * c22 87 | qa2x = qa1x - ccax 88 | qa2y = qa1y - ccay 89 | qa2z = qa1z - ccaz 90 | 91 | r1x = qa2x * qa2x 92 | r1y = qa2y * qa2y 93 | r1z = qa2z * qa2z 94 | r1t = r1x + r1y 95 | r1 = r1t + r1z 96 | 97 | r2x = ccax * ccax 98 | r2y = ccay * ccay 99 | r2z = ccaz * ccaz 100 | r2t = r2x + r2y 101 | r2 = r2t + r2z 102 | 103 | ret = r1 - r2 104 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/inGabrielSphere_IEEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(q:l1x,l1y,l1z,d1) 2 | ax ay az bx by bz cx cy cz 3 | 4 | baxs = bx - ax 5 | bays = by - ay 6 | bazs = bz - az 7 | caxs = cx - ax 8 | cays = cy - ay 9 | cazs = cz - az 10 | 11 | bax = baxs * d1 12 | bay = bays * d1 13 | baz = bazs * d1 14 | cax = caxs * d1 15 | cay = cays * d1 16 | caz = cazs * d1 17 | 18 | axs = ax * d1 19 | ays = ay * d1 20 | azs = az * d1 21 | 22 | qax = l1x - axs 23 | qay = l1y - ays 24 | qaz = l1z - azs 25 | 26 | cx1 = bay * caz 27 | cx2 = baz * cay 28 | crossbcx = cx1 - cx2 29 | cy1 = baz * cax 30 | cy2 = bax * caz 31 | crossbcy = cy1 - cy2 32 | cz1 = bax * cay 33 | cz2 = bay * cax 34 | crossbcz = cz1 - cz2 35 | 36 | ba2x = bax * bax 37 | ba2y = bay * bay 38 | ba2z = baz * baz 39 | ba2t = ba2x + ba2y 40 | ba2 = ba2t + ba2z 41 | 42 | ca2x = cax * cax 43 | ca2y = cay * cay 44 | ca2z = caz * caz 45 | ca2t = ca2x + ca2y 46 | ca2 = ca2t + ca2z 47 | 48 | calx = cax * ba2 49 | caly = cay * ba2 50 | calz = caz * ba2 51 | balx = bax * ca2 52 | baly = bay * ca2 53 | balz = baz * ca2 54 | abcx = calx - balx 55 | abcy = caly - baly 56 | abcz = calz - balz 57 | 58 | kx1 = abcy * crossbcz 59 | kx2 = abcz * crossbcy 60 | ccax = kx1 - kx2 61 | ky1 = abcz * crossbcx 62 | ky2 = abcx * crossbcz 63 | ccay = ky1 - ky2 64 | kz1 = abcx * crossbcy 65 | kz2 = abcy * crossbcx 66 | ccaz = kz1 - kz2 67 | 68 | cr2x = crossbcx * crossbcx 69 | cr2y = crossbcy * crossbcy 70 | cr2z = crossbcz * crossbcz 71 | cr2t = cr2x + cr2y 72 | c2 = cr2t + cr2z 73 | 74 | c22 = 2 * c2 75 | qa1x = qax * c22 76 | qa1y = qay * c22 77 | qa1z = qaz * c22 78 | qa2x = qa1x - ccax 79 | qa2y = qa1y - ccay 80 | qa2z = qa1z - ccaz 81 | 82 | r1x = qa2x * qa2x 83 | r1y = qa2y * qa2y 84 | r1z = qa2z * qa2z 85 | r1t = r1x + r1y 86 | r1 = r1t + r1z 87 | 88 | r2x = ccax * ccax 89 | r2y = ccay * ccay 90 | r2z = ccaz * ccaz 91 | r2t = r2x + r2y 92 | r2 = r2t + r2z 93 | 94 | ret = r1 - r2 95 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/inGabrielSphere_IIEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(q:l1x,l1y,l1z,d1) 2 | genericPoint(a:l2x,l2y,l2z,d2) 3 | bx by bz cx cy cz 4 | 5 | bxd2 = bx * d2 6 | byd2 = by * d2 7 | bzd2 = bz * d2 8 | cxd2 = cx * d2 9 | cyd2 = cy * d2 10 | czd2 = cz * d2 11 | l1x2 = l1x * d2 12 | l1y2 = l1y * d2 13 | l1z2 = l1z * d2 14 | 15 | baxs = bxd2 - l2x 16 | bays = byd2 - l2y 17 | bazs = bzd2 - l2z 18 | caxs = cxd2 - l2x 19 | cays = cyd2 - l2y 20 | cazs = czd2 - l2z 21 | 22 | bax = baxs * d1 23 | bay = bays * d1 24 | baz = bazs * d1 25 | cax = caxs * d1 26 | cay = cays * d1 27 | caz = cazs * d1 28 | l2x1 = l2x * d1 29 | l2y1 = l2y * d1 30 | l2z1 = l2z * d1 31 | 32 | qax = l1x2 - l2x1 33 | qay = l1y2 - l2y1 34 | qaz = l1z2 - l2z1 35 | 36 | cx1 = bay * caz 37 | cx2 = baz * cay 38 | crossbcx = cx1 - cx2 39 | cy1 = baz * cax 40 | cy2 = bax * caz 41 | crossbcy = cy1 - cy2 42 | cz1 = bax * cay 43 | cz2 = bay * cax 44 | crossbcz = cz1 - cz2 45 | 46 | ba2x = bax * bax 47 | ba2y = bay * bay 48 | ba2z = baz * baz 49 | ba2t = ba2x + ba2y 50 | ba2 = ba2t + ba2z 51 | 52 | ca2x = cax * cax 53 | ca2y = cay * cay 54 | ca2z = caz * caz 55 | ca2t = ca2x + ca2y 56 | ca2 = ca2t + ca2z 57 | 58 | calx = cax * ba2 59 | caly = cay * ba2 60 | calz = caz * ba2 61 | balx = bax * ca2 62 | baly = bay * ca2 63 | balz = baz * ca2 64 | abcx = calx - balx 65 | abcy = caly - baly 66 | abcz = calz - balz 67 | 68 | kx1 = abcy * crossbcz 69 | kx2 = abcz * crossbcy 70 | ccax = kx1 - kx2 71 | ky1 = abcz * crossbcx 72 | ky2 = abcx * crossbcz 73 | ccay = ky1 - ky2 74 | kz1 = abcx * crossbcy 75 | kz2 = abcy * crossbcx 76 | ccaz = kz1 - kz2 77 | 78 | cr2x = crossbcx * crossbcx 79 | cr2y = crossbcy * crossbcy 80 | cr2z = crossbcz * crossbcz 81 | cr2t = cr2x + cr2y 82 | c2 = cr2t + cr2z 83 | 84 | c22 = 2 * c2 85 | qa1x = qax * c22 86 | qa1y = qay * c22 87 | qa1z = qaz * c22 88 | qa2x = qa1x - ccax 89 | qa2y = qa1y - ccay 90 | qa2z = qa1z - ccaz 91 | 92 | r1x = qa2x * qa2x 93 | r1y = qa2y * qa2y 94 | r1z = qa2z * qa2z 95 | r1t = r1x + r1y 96 | r1 = r1t + r1z 97 | 98 | r2x = ccax * ccax 99 | r2y = ccay * ccay 100 | r2z = ccaz * ccaz 101 | r2t = r2x + r2y 102 | r2 = r2t + r2z 103 | 104 | ret = r1 - r2 105 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/inGabrielSphere_IIIE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(q:l1x,l1y,l1z,d1) 2 | genericPoint(a:l2x,l2y,l2z,d2) 3 | genericPoint(b:l3x,l3y,l3z,d3) 4 | cx cy cz 5 | 6 | d12 = d1 * d2 7 | d23 = d2 * d3 8 | d13 = d1 * d3 9 | d123 = d12 * d3 10 | 11 | bxd2 = l3x * d12 12 | byd2 = l3y * d12 13 | bzd2 = l3z * d12 14 | cxd2 = cx * d123 15 | cyd2 = cy * d123 16 | czd2 = cz * d123 17 | qxd2 = l1x * d23 18 | qyd2 = l1y * d23 19 | qzd2 = l1z * d23 20 | 21 | l2xm = l2x * d13 22 | l2ym = l2y * d13 23 | l2zm = l2z * d13 24 | 25 | bax = bxd2 - l2xm 26 | bay = byd2 - l2ym 27 | baz = bzd2 - l2zm 28 | cax = cxd2 - l2xm 29 | cay = cyd2 - l2ym 30 | caz = czd2 - l2zm 31 | qax = qxd2 - l2xm 32 | qay = qyd2 - l2ym 33 | qaz = qzd2 - l2zm 34 | 35 | cx1 = bay * caz 36 | cx2 = baz * cay 37 | crossbcx = cx1 - cx2 38 | cy1 = baz * cax 39 | cy2 = bax * caz 40 | crossbcy = cy1 - cy2 41 | cz1 = bax * cay 42 | cz2 = bay * cax 43 | crossbcz = cz1 - cz2 44 | 45 | ba2x = bax * bax 46 | ba2y = bay * bay 47 | ba2z = baz * baz 48 | ba2t = ba2x + ba2y 49 | ba2 = ba2t + ba2z 50 | 51 | ca2x = cax * cax 52 | ca2y = cay * cay 53 | ca2z = caz * caz 54 | ca2t = ca2x + ca2y 55 | ca2 = ca2t + ca2z 56 | 57 | calx = cax * ba2 58 | caly = cay * ba2 59 | calz = caz * ba2 60 | balx = bax * ca2 61 | baly = bay * ca2 62 | balz = baz * ca2 63 | abcx = calx - balx 64 | abcy = caly - baly 65 | abcz = calz - balz 66 | 67 | kx1 = abcy * crossbcz 68 | kx2 = abcz * crossbcy 69 | ccax = kx1 - kx2 70 | ky1 = abcz * crossbcx 71 | ky2 = abcx * crossbcz 72 | ccay = ky1 - ky2 73 | kz1 = abcx * crossbcy 74 | kz2 = abcy * crossbcx 75 | ccaz = kz1 - kz2 76 | 77 | cr2x = crossbcx * crossbcx 78 | cr2y = crossbcy * crossbcy 79 | cr2z = crossbcz * crossbcz 80 | cr2t = cr2x + cr2y 81 | c2 = cr2t + cr2z 82 | 83 | c22 = 2 * c2 84 | qa1x = qax * c22 85 | qa1y = qay * c22 86 | qa1z = qaz * c22 87 | qa2x = qa1x - ccax 88 | qa2y = qa1y - ccay 89 | qa2z = qa1z - ccaz 90 | 91 | r1x = qa2x * qa2x 92 | r1y = qa2y * qa2y 93 | r1z = qa2z * qa2z 94 | r1t = r1x + r1y 95 | r1 = r1t + r1z 96 | 97 | r2x = ccax * ccax 98 | r2y = ccay * ccay 99 | r2z = ccaz * ccaz 100 | r2t = r2x + r2y 101 | r2 = r2t + r2z 102 | 103 | ret = r1 - r2 104 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/inGabrielSphere_IIII.txt: -------------------------------------------------------------------------------- 1 | genericPoint(q:l1x,l1y,l1z,d1) 2 | genericPoint(a:l2x,l2y,l2z,d2) 3 | genericPoint(b:l3x,l3y,l3z,d3) 4 | genericPoint(c:l4x,l4y,l4z,d4) 5 | 6 | d23 = d2 * d3 7 | d24 = d2 * d4 8 | d34 = d3 * d4 9 | d123 = d1 * d23 10 | d124 = d1 * d24 11 | d134 = d1 * d34 12 | d234 = d23 * d4 13 | 14 | bxd2 = l3x * d124 15 | byd2 = l3y * d124 16 | bzd2 = l3z * d124 17 | cxd2 = l4x * d123 18 | cyd2 = l4y * d123 19 | czd2 = l4z * d123 20 | qxd2 = l1x * d234 21 | qyd2 = l1y * d234 22 | qzd2 = l1z * d234 23 | 24 | l2xm = l2x * d134 25 | l2ym = l2y * d134 26 | l2zm = l2z * d134 27 | 28 | bax = bxd2 - l2xm 29 | bay = byd2 - l2ym 30 | baz = bzd2 - l2zm 31 | cax = cxd2 - l2xm 32 | cay = cyd2 - l2ym 33 | caz = czd2 - l2zm 34 | qax = qxd2 - l2xm 35 | qay = qyd2 - l2ym 36 | qaz = qzd2 - l2zm 37 | 38 | cx1 = bay * caz 39 | cx2 = baz * cay 40 | crossbcx = cx1 - cx2 41 | cy1 = baz * cax 42 | cy2 = bax * caz 43 | crossbcy = cy1 - cy2 44 | cz1 = bax * cay 45 | cz2 = bay * cax 46 | crossbcz = cz1 - cz2 47 | 48 | ba2x = bax * bax 49 | ba2y = bay * bay 50 | ba2z = baz * baz 51 | ba2t = ba2x + ba2y 52 | ba2 = ba2t + ba2z 53 | 54 | ca2x = cax * cax 55 | ca2y = cay * cay 56 | ca2z = caz * caz 57 | ca2t = ca2x + ca2y 58 | ca2 = ca2t + ca2z 59 | 60 | calx = cax * ba2 61 | caly = cay * ba2 62 | calz = caz * ba2 63 | balx = bax * ca2 64 | baly = bay * ca2 65 | balz = baz * ca2 66 | abcx = calx - balx 67 | abcy = caly - baly 68 | abcz = calz - balz 69 | 70 | kx1 = abcy * crossbcz 71 | kx2 = abcz * crossbcy 72 | ccax = kx1 - kx2 73 | ky1 = abcz * crossbcx 74 | ky2 = abcx * crossbcz 75 | ccay = ky1 - ky2 76 | kz1 = abcx * crossbcy 77 | kz2 = abcy * crossbcx 78 | ccaz = kz1 - kz2 79 | 80 | cr2x = crossbcx * crossbcx 81 | cr2y = crossbcy * crossbcy 82 | cr2z = crossbcz * crossbcz 83 | cr2t = cr2x + cr2y 84 | c2 = cr2t + cr2z 85 | 86 | c22 = 2 * c2 87 | qa1x = qax * c22 88 | qa1y = qay * c22 89 | qa1z = qaz * c22 90 | qa2x = qa1x - ccax 91 | qa2y = qa1y - ccay 92 | qa2z = qa1z - ccaz 93 | 94 | r1x = qa2x * qa2x 95 | r1y = qa2y * qa2y 96 | r1z = qa2z * qa2z 97 | r1t = r1x + r1y 98 | r1 = r1t + r1z 99 | 100 | r2x = ccax * ccax 101 | r2y = ccay * ccay 102 | r2z = ccaz * ccaz 103 | r2t = r2x + r2y 104 | r2 = r2t + r2z 105 | 106 | ret = r1 - r2 107 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/inSphere_IEEEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | pbx pby pbz 3 | pcx pcy pcz 4 | pdx pdy pdz 5 | pex pey pez 6 | 7 | pexd = pex * d1 8 | peyd = pey * d1 9 | pezd = pez * d1 10 | aex = l1x - pexd 11 | aey = l1y - peyd 12 | aez = l1z - pezd 13 | 14 | bex = pbx - pex 15 | bey = pby - pey 16 | bez = pbz - pez 17 | cex = pcx - pex 18 | cey = pcy - pey 19 | cez = pcz - pez 20 | dex = pdx - pex 21 | dey = pdy - pey 22 | dez = pdz - pez 23 | 24 | aexbey = aex * bey 25 | bexaey = bex * aey 26 | ab = aexbey - bexaey 27 | bexcey = bex * cey 28 | cexbey = cex * bey 29 | bc = bexcey - cexbey 30 | cexdey = cex * dey 31 | dexcey = dex * cey 32 | cd = cexdey - dexcey 33 | dexaey = dex * aey 34 | aexdey = aex * dey 35 | da = dexaey - aexdey 36 | aexcey = aex * cey 37 | cexaey = cex * aey 38 | ac = aexcey - cexaey 39 | bexdey = bex * dey 40 | dexbey = dex * bey 41 | bd = bexdey - dexbey 42 | 43 | abc1 = aez * bc 44 | abc2 = bez * ac 45 | abc3 = cez * ab 46 | abc4 = abc1 + abc3 47 | abc = abc4 - abc2 48 | 49 | bcd1 = bez * cd 50 | bcd2 = cez * bd 51 | bcd3 = dez * bc 52 | bcd4 = bcd1 + bcd3 53 | bcd = bcd4 - bcd2 54 | 55 | cda1 = cez * da 56 | cda2 = dez * ac 57 | cda3 = aez * cd 58 | cda4 = cda1 + cda3 59 | cda = cda4 + cda2 60 | 61 | dab1 = dez * ab 62 | dab2 = aez * bd 63 | dab3 = bez * da 64 | dab4 = dab1 + dab3 65 | dab = dab4 + dab2 66 | 67 | al1 = aex * aex 68 | al2 = aey * aey 69 | al3 = aez * aez 70 | al4 = al1 + al2 71 | alift = al4 + al3 72 | 73 | bl1 = bex * bex 74 | bl2 = bey * bey 75 | bl3 = bez * bez 76 | bl4 = bl1 + bl2 77 | blift = bl4 + bl3 78 | 79 | cl1 = cex * cex 80 | cl2 = cey * cey 81 | cl3 = cez * cez 82 | cl4 = cl1 + cl2 83 | clift = cl4 + cl3 84 | 85 | dl1 = dex * dex 86 | dl2 = dey * dey 87 | dl3 = dez * dez 88 | dl4 = dl1 + dl2 89 | dlift = dl4 + dl3 90 | 91 | ds1 = dlift * abc 92 | ds2 = clift * dab 93 | dlp = ds2 - ds1 94 | dl = dlp * d1 95 | 96 | dr1p = blift * cda 97 | dr1 = dr1p * d1 98 | dr2 = alift * bcd 99 | dr = dr2 - dr1 100 | 101 | det = dl + dr 102 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/inSphere_IIEEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | pcx pcy pcz 4 | pdx pdy pdz 5 | pex pey pez 6 | 7 | pexd = pex * d1 8 | peyd = pey * d1 9 | pezd = pez * d1 10 | aex = l1x - pexd 11 | aey = l1y - peyd 12 | aez = l1z - pezd 13 | 14 | pexd2 = pex * d2 15 | peyd2 = pey * d2 16 | pezd2 = pez * d2 17 | bex = l2x - pexd2 18 | bey = l2y - peyd2 19 | bez = l2z - pezd2 20 | 21 | cex = pcx - pex 22 | cey = pcy - pey 23 | cez = pcz - pez 24 | dex = pdx - pex 25 | dey = pdy - pey 26 | dez = pdz - pez 27 | 28 | aexbey = aex * bey 29 | bexaey = bex * aey 30 | ab = aexbey - bexaey // d1d2 31 | bexcey = bex * cey 32 | cexbey = cex * bey 33 | bc = bexcey - cexbey // d2 34 | cexdey = cex * dey 35 | dexcey = dex * cey 36 | cd = cexdey - dexcey // 37 | dexaey = dex * aey 38 | aexdey = aex * dey 39 | da = dexaey - aexdey // d1 40 | aexcey = aex * cey 41 | cexaey = cex * aey 42 | ac = aexcey - cexaey // d1 43 | bexdey = bex * dey 44 | dexbey = dex * bey 45 | bd = bexdey - dexbey // d2 46 | 47 | abc1 = aez * bc 48 | abc2 = bez * ac 49 | abc3 = cez * ab 50 | abc4 = abc1 + abc3 51 | abc = abc4 - abc2 // d1d2 52 | 53 | bcd1 = bez * cd 54 | bcd2 = cez * bd 55 | bcd3 = dez * bc 56 | bcd4 = bcd1 + bcd3 57 | bcd = bcd4 - bcd2 // d2 58 | 59 | cda1 = cez * da 60 | cda2 = dez * ac 61 | cda3 = aez * cd 62 | cda4 = cda1 + cda3 63 | cda = cda4 + cda2 // d1 64 | 65 | dab1 = dez * ab 66 | dab2 = aez * bd 67 | dab3 = bez * da 68 | dab4 = dab1 + dab3 69 | dab = dab4 + dab2 // d1d2 70 | 71 | al1 = aex * aex 72 | al2 = aey * aey 73 | al3 = aez * aez 74 | al4 = al1 + al2 75 | alift = al4 + al3 // d1^2 76 | 77 | bl1 = bex * bex 78 | bl2 = bey * bey 79 | bl3 = bez * bez 80 | bl4 = bl1 + bl2 81 | blift = bl4 + bl3 // d2^2 82 | 83 | cl1 = cex * cex 84 | cl2 = cey * cey 85 | cl3 = cez * cez 86 | cl4 = cl1 + cl2 87 | clift = cl4 + cl3 // 88 | 89 | dl1 = dex * dex 90 | dl2 = dey * dey 91 | dl3 = dez * dez 92 | dl4 = dl1 + dl2 93 | dlift = dl4 + dl3 // 94 | 95 | ds1 = dlift * abc // d1d2 96 | ds2 = clift * dab // d1d2 97 | dl = ds2 - ds1 // d1d2 98 | dll = dl * d1 99 | dlll = dll * d2 100 | 101 | dr1 = blift * cda // d1 d2^2 102 | dr12 = dr1 * d1 // d1^2 d2^2 103 | dr2 = alift * bcd // d1^2 d2 104 | dr22 = dr2 * d2 // d1^2 d2^2 105 | dr = dr22 - dr12 // d1^2 d2^2 106 | 107 | det = dlll + dr 108 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/inSphere_IIIEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | genericPoint(p3:l3x,l3y,l3z,d3) 4 | pdx pdy pdz 5 | pex pey pez 6 | 7 | pexd = pex * d1 8 | peyd = pey * d1 9 | pezd = pez * d1 10 | aex = l1x - pexd 11 | aey = l1y - peyd 12 | aez = l1z - pezd // d1 13 | 14 | pexd2 = pex * d2 15 | peyd2 = pey * d2 16 | pezd2 = pez * d2 17 | bex = l2x - pexd2 18 | bey = l2y - peyd2 19 | bez = l2z - pezd2 // d2 20 | 21 | pexd3 = pex * d3 22 | peyd3 = pey * d3 23 | pezd3 = pez * d3 24 | cex = l3x - pexd3 25 | cey = l3y - peyd3 26 | cez = l3z - pezd3 // d3 27 | 28 | dex = pdx - pex 29 | dey = pdy - pey 30 | dez = pdz - pez // 31 | 32 | aexbey = aex * bey 33 | bexaey = bex * aey 34 | ab = aexbey - bexaey // d1d2 35 | bexcey = bex * cey 36 | cexbey = cex * bey 37 | bc = bexcey - cexbey // d2d3 38 | cexdey = cex * dey 39 | dexcey = dex * cey 40 | cd = cexdey - dexcey // d3 41 | dexaey = dex * aey 42 | aexdey = aex * dey 43 | da = dexaey - aexdey // d1 44 | aexcey = aex * cey 45 | cexaey = cex * aey 46 | ac = aexcey - cexaey // d1d3 47 | bexdey = bex * dey 48 | dexbey = dex * bey 49 | bd = bexdey - dexbey // d2 50 | 51 | abc1 = aez * bc 52 | abc2 = bez * ac 53 | abc3 = cez * ab 54 | abc4 = abc1 + abc3 55 | abc = abc4 - abc2 // d1d2d3 56 | 57 | bcd1 = bez * cd 58 | bcd2 = cez * bd 59 | bcd3 = dez * bc 60 | bcd4 = bcd1 + bcd3 61 | bcd = bcd4 - bcd2 // d2d3 62 | 63 | cda1 = cez * da 64 | cda2 = dez * ac 65 | cda3 = aez * cd 66 | cda4 = cda1 + cda3 67 | cda = cda4 + cda2 // d1d3 68 | 69 | dab1 = dez * ab 70 | dab2 = aez * bd 71 | dab3 = bez * da 72 | dab4 = dab1 + dab3 73 | dab = dab4 + dab2 // d1d2 74 | 75 | al1 = aex * aex 76 | al2 = aey * aey 77 | al3 = aez * aez 78 | al4 = al1 + al2 79 | alift = al4 + al3 // d1^2 80 | 81 | bl1 = bex * bex 82 | bl2 = bey * bey 83 | bl3 = bez * bez 84 | bl4 = bl1 + bl2 85 | blift = bl4 + bl3 // d2^2 86 | 87 | cl1 = cex * cex 88 | cl2 = cey * cey 89 | cl3 = cez * cez 90 | cl4 = cl1 + cl2 91 | clift = cl4 + cl3 // d3^2 92 | 93 | dl1 = dex * dex 94 | dl2 = dey * dey 95 | dl3 = dez * dez 96 | dl4 = dl1 + dl2 97 | dlift = dl4 + dl3 // 98 | 99 | ds1 = dlift * abc // d1 d2 d3 100 | ds1n = ds1 * d3 // d1 d2 d3^2 101 | ds2 = clift * dab // d1 d2 d3^2 102 | dl = ds2 - ds1n // d1 d2 d3^2 103 | dlm = dl * d1 104 | dln = dlm * d2 // d1^2 d2^2 d3^2 105 | 106 | dr1 = blift * cda // d1 d2^2 d3 107 | dr1n = dr1 * d1 // d1^2 d2^2 d3 108 | dr2 = alift * bcd // d1^2 d2 d3 109 | dr2n = dr2 * d2 // d1^2 d2^2 d3 110 | dr = dr2n - dr1n // d1^2 d2^2 d3 111 | drn = dr * d3 // d1^2 d2^2 d3^2 112 | 113 | det = dln + drn 114 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/inSphere_IIIIE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | genericPoint(p3:l3x,l3y,l3z,d3) 4 | genericPoint(p4:l4x,l4y,l4z,d4) 5 | pex pey pez 6 | 7 | pexd = pex * d1 8 | peyd = pey * d1 9 | pezd = pez * d1 10 | aex = l1x - pexd 11 | aey = l1y - peyd 12 | aez = l1z - pezd 13 | 14 | pexd2 = pex * d2 15 | peyd2 = pey * d2 16 | pezd2 = pez * d2 17 | bex = l2x - pexd2 18 | bey = l2y - peyd2 19 | bez = l2z - pezd2 20 | 21 | pexd3 = pex * d3 22 | peyd3 = pey * d3 23 | pezd3 = pez * d3 24 | cex = l3x - pexd3 25 | cey = l3y - peyd3 26 | cez = l3z - pezd3 27 | 28 | pexd4 = pex * d4 29 | peyd4 = pey * d4 30 | pezd4 = pez * d4 31 | dex = l4x - pexd4 32 | dey = l4y - peyd4 33 | dez = l4z - pezd4 34 | 35 | aexbey = aex * bey 36 | bexaey = bex * aey 37 | ab = aexbey - bexaey // d1 d2 d3^2 d4^2 38 | bexcey = bex * cey 39 | cexbey = cex * bey 40 | bc = bexcey - cexbey // d1^2 d2 d3 d4^2 41 | cexdey = cex * dey 42 | dexcey = dex * cey 43 | cd = cexdey - dexcey // d1^2 d2^2 d3 d4 44 | dexaey = dex * aey 45 | aexdey = aex * dey 46 | da = dexaey - aexdey // d1 d2^2 d3^2 d4 47 | aexcey = aex * cey 48 | cexaey = cex * aey 49 | ac = aexcey - cexaey // d1 d2^2 d3 d4^2 50 | bexdey = bex * dey 51 | dexbey = dex * bey 52 | bd = bexdey - dexbey // d1^2 d2 d3^2 d4 53 | 54 | abc1 = aez * bc 55 | abc2 = bez * ac 56 | abc3 = cez * ab 57 | abc4 = abc1 + abc3 58 | abc = abc4 - abc2 // d1^2 d2^2 d3^2 d4^3 59 | 60 | bcd1 = bez * cd 61 | bcd2 = cez * bd 62 | bcd3 = dez * bc 63 | bcd4 = bcd1 + bcd3 64 | bcd = bcd4 - bcd2 // d1^3 d2^2 d3^2 d4^2 65 | 66 | cda1 = cez * da 67 | cda2 = dez * ac 68 | cda3 = aez * cd 69 | cda4 = cda1 + cda3 70 | cda = cda4 + cda2 // d1^2 d2^3 d3^2 d4^2 71 | 72 | dab1 = dez * ab 73 | dab2 = aez * bd 74 | dab3 = bez * da 75 | dab4 = dab1 + dab3 76 | dab = dab4 + dab2 // d1^2 d2^2 d3^3 d4^2 77 | 78 | al1 = aex * aex 79 | al2 = aey * aey 80 | al3 = aez * aez 81 | al4 = al1 + al2 82 | alift = al4 + al3 // d2^2 d3^2 d4^2 83 | 84 | bl1 = bex * bex 85 | bl2 = bey * bey 86 | bl3 = bez * bez 87 | bl4 = bl1 + bl2 88 | blift = bl4 + bl3 // d1^2 d3^2 d4^2 89 | 90 | cl1 = cex * cex 91 | cl2 = cey * cey 92 | cl3 = cez * cez 93 | cl4 = cl1 + cl2 94 | clift = cl4 + cl3 // d1^2 d2^2 d4^2 95 | 96 | dl1 = dex * dex 97 | dl2 = dey * dey 98 | dl3 = dez * dez 99 | dl4 = dl1 + dl2 100 | dlift = dl4 + dl3 // d1^2 d2^2 d3^2 101 | 102 | ds1 = dlift * abc // d1^4 d2^4 d3^4 d4^3 103 | ds12 = ds1 * d3 // d1^4 d2^4 d3^3 d4^3 104 | ds2 = clift * dab // d1^4 d2^4 d3^3 d4^4 105 | ds22 = ds2 * d4 // d1^4 d2^4 d3^3 d4^3 106 | dl = ds22 - ds12 // d1^4 d2^4 d3^3 d4^3 107 | dlx1 = dl * d1 108 | dlx2 = dlx1 * d2 109 | 110 | dr1 = blift * cda // d1^4 d2^3 d3^4 d4^4 111 | dr12 = dr1 * d1 // d1^3 d2^3 d3^4 d4^4 112 | dr2 = alift * bcd // d1^3 d2^4 d3^4 d4^4 113 | dr22 = dr2 * d2 // d1^3 d2^3 d3^4 d4^4 114 | dr = dr22 - dr12 // d1^3 d2^3 d3^4 d4^4 115 | drx1 = dr * d3 116 | drx2 = drx1 * d4 117 | 118 | det = dlx2 + drx2 119 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/inSphere_IIIII.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | genericPoint(p3:l3x,l3y,l3z,d3) 4 | genericPoint(p4:l4x,l4y,l4z,d4) 5 | genericPoint(p5:l5x,l5y,l5z,d5) 6 | 7 | pexd = l5x * d1 8 | peyd = l5y * d1 9 | pezd = l5z * d1 10 | ll1x = l1x * d5 11 | ll1y = l1y * d5 12 | ll1z = l1z * d5 13 | aex = ll1x - pexd 14 | aey = ll1y - peyd 15 | aez = ll1z - pezd // d1d5 16 | 17 | pexd2 = l5x * d2 18 | peyd2 = l5y * d2 19 | pezd2 = l5z * d2 20 | ll2x = l2x * d5 21 | ll2y = l2y * d5 22 | ll2z = l2z * d5 23 | bex = ll2x - pexd2 24 | bey = ll2y - peyd2 25 | bez = ll2z - pezd2 // d2d5 26 | 27 | pexd3 = l5x * d3 28 | peyd3 = l5y * d3 29 | pezd3 = l5z * d3 30 | ll3x = l3x * d5 31 | ll3y = l3y * d5 32 | ll3z = l3z * d5 33 | cex = ll3x - pexd3 34 | cey = ll3y - peyd3 35 | cez = ll3z - pezd3 // d3d5 36 | 37 | pexd4 = l5x * d4 38 | peyd4 = l5y * d4 39 | pezd4 = l5z * d4 40 | ll4x = l4x * d5 41 | ll4y = l4y * d5 42 | ll4z = l4z * d5 43 | dex = ll4x - pexd4 44 | dey = ll4y - peyd4 45 | dez = ll4z - pezd4 // d4d5 46 | 47 | aexbey = aex * bey 48 | bexaey = bex * aey 49 | ab = aexbey - bexaey // d1 d2 d5^2 50 | bexcey = bex * cey 51 | cexbey = cex * bey 52 | bc = bexcey - cexbey // d2 d3 d5^2 53 | cexdey = cex * dey 54 | dexcey = dex * cey 55 | cd = cexdey - dexcey // d3 d4 d5^2 56 | dexaey = dex * aey 57 | aexdey = aex * dey 58 | da = dexaey - aexdey // d1 d4 d5^2 59 | aexcey = aex * cey 60 | cexaey = cex * aey 61 | ac = aexcey - cexaey // d1 d3 d5^2 62 | bexdey = bex * dey 63 | dexbey = dex * bey 64 | bd = bexdey - dexbey // d2 d4 d5^2 65 | 66 | abc1 = aez * bc 67 | abc2 = bez * ac 68 | abc3 = cez * ab 69 | abc4 = abc1 + abc3 70 | abc = abc4 - abc2 // d1 d2 d3 d5^3 71 | 72 | bcd1 = bez * cd 73 | bcd2 = cez * bd 74 | bcd3 = dez * bc 75 | bcd4 = bcd1 + bcd3 76 | bcd = bcd4 - bcd2 // d2 d3 d4 d5^3 77 | 78 | cda1 = cez * da 79 | cda2 = dez * ac 80 | cda3 = aez * cd 81 | cda4 = cda1 + cda3 82 | cda = cda4 + cda2 // d1 d3 d4 d5^3 83 | 84 | dab1 = dez * ab 85 | dab2 = aez * bd 86 | dab3 = bez * da 87 | dab4 = dab1 + dab3 88 | dab = dab4 + dab2 // d1 d2 d4 d5^3 89 | 90 | al1 = aex * aex 91 | al2 = aey * aey 92 | al3 = aez * aez 93 | al4 = al1 + al2 94 | alift = al4 + al3 // d1^2 d5^2 95 | 96 | bl1 = bex * bex 97 | bl2 = bey * bey 98 | bl3 = bez * bez 99 | bl4 = bl1 + bl2 100 | blift = bl4 + bl3 // d2^2 d5^2 101 | 102 | cl1 = cex * cex 103 | cl2 = cey * cey 104 | cl3 = cez * cez 105 | cl4 = cl1 + cl2 106 | clift = cl4 + cl3 // d3^2 d5^2 107 | 108 | dl1 = dex * dex 109 | dl2 = dey * dey 110 | dl3 = dez * dez 111 | dl4 = dl1 + dl2 112 | dlift = dl4 + dl3 // d4^2 d5^2 113 | 114 | ds1 = dlift * abc // d1 d2 d3 d4^2 d5^5 115 | ds1n = ds1 * d3 // d1 d2 d3^2 d4^2 d5^5 116 | ds2 = clift * dab // d1 d2 d3^2 d4 d5^5 117 | ds2n = ds2 * d4 // d1 d2 d3^2 d4^2 d5^5 118 | dl = ds2n - ds1n // d1 d2 d3^2 d4^2 d5^5 119 | dla = dl * d1 120 | dlb = dla * d2 121 | 122 | dr1 = blift * cda // d1 d2^2 d3 d4 d5^5 123 | dr1n = dr1 * d1 124 | dr2 = alift * bcd // d1^2 d2 d3 d4 d5^5 125 | dr2n = dr2 * d2 126 | dr = dr2n - dr1n // d1^2 d2^2 d3 d4 d5^5 127 | dra = dr * d3 128 | drb = dra * d4 129 | 130 | det = dlb + drb 131 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/incircle_indirect_IEEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,d1) 2 | pbx pby pcx pcy pdx pdy 3 | 4 | pdxt = pdx * d1 5 | pdyt = pdy * d1 6 | adx = l1x - pdxt 7 | ady = l1y - pdyt 8 | bdx = pbx - pdx 9 | bdy = pby - pdy 10 | cdx = pcx - pdx 11 | cdy = pcy - pdy 12 | 13 | abdeta = adx * bdy 14 | abdetb = bdx * ady 15 | abdet = abdeta - abdetb 16 | 17 | bcdeta = bdx * cdy 18 | bcdetb = cdx * bdy 19 | bcdet = bcdeta - bcdetb 20 | 21 | cadeta = cdx * ady 22 | cadetb = adx * cdy 23 | cadet = cadeta - cadetb 24 | 25 | alifta = adx * adx 26 | aliftb = ady * ady 27 | alift = alifta + aliftb 28 | 29 | blifta = bdx * bdx 30 | bliftb = bdy * bdy 31 | blift = blifta + bliftb 32 | 33 | clifta = cdx * cdx 34 | cliftb = cdy * cdy 35 | clift = clifta + cliftb 36 | 37 | la = alift * bcdet 38 | lbt = blift * cadet 39 | lb = lbt * d1 40 | lct = clift * abdet 41 | lc = lct * d1 42 | lab = la + lb 43 | 44 | L = lab + lc 45 | 46 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/incircle_indirect_IIEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,d1) 2 | genericPoint(p2:l2x,l2y,d2) 3 | pcx pcy pdx pdy 4 | 5 | pdx1 = pdx * d1 6 | pdy1 = pdy * d1 7 | adx = l1x - pdx1 8 | ady = l1y - pdy1 9 | pdx2 = pdx * d2 10 | pdy2 = pdy * d2 11 | bdx = l2x - pdx2 12 | bdy = l2y - pdy2 13 | cdx = pcx - pdx 14 | cdy = pcy - pdy 15 | 16 | abdeta = adx * bdy 17 | abdetb = bdx * ady 18 | abdet = abdeta - abdetb 19 | 20 | bcdeta = bdx * cdy 21 | bcdetb = cdx * bdy 22 | bcdet = bcdeta - bcdetb 23 | 24 | cadeta = cdx * ady 25 | cadetb = adx * cdy 26 | cadet = cadeta - cadetb 27 | 28 | alifta = adx * adx 29 | aliftb = ady * ady 30 | aliftt = alifta + aliftb 31 | alift = aliftt * d2 32 | 33 | blifta = bdx * bdx 34 | bliftb = bdy * bdy 35 | blift = blifta + bliftb 36 | 37 | clifta = cdx * cdx 38 | cliftb = cdy * cdy 39 | cliftt = clifta + cliftb 40 | clift = cliftt * d2 41 | 42 | la = alift * bcdet 43 | lb = blift * cadet 44 | lc = clift * abdet 45 | lab = lc + lb 46 | lab2 = lab * d1 47 | 48 | L = lab2 + la 49 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/incircle_indirect_IIIE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,d1) 2 | genericPoint(p2:l2x,l2y,d2) 3 | genericPoint(p3:l3x,l3y,d3) 4 | pdx pdy 5 | 6 | pdx1 = pdx * d1 7 | pdy1 = pdy * d1 8 | adx = l1x - pdx1 9 | ady = l1y - pdy1 10 | pdx2 = pdx * d2 11 | pdy2 = pdy * d2 12 | bdx = l2x - pdx2 13 | bdy = l2y - pdy2 14 | pdx3 = pdx * d3 15 | pdy3 = pdy * d3 16 | cdx = l3x - pdx3 17 | cdy = l3y - pdy3 18 | 19 | abdeta = adx * bdy 20 | abdetb = bdx * ady 21 | abdet = abdeta - abdetb 22 | 23 | bcdeta = bdx * cdy 24 | bcdetb = cdx * bdy 25 | bcdet = bcdeta - bcdetb 26 | 27 | cadeta = cdx * ady 28 | cadetb = adx * cdy 29 | cadet = cadeta - cadetb 30 | 31 | alifta = adx * adx 32 | aliftb = ady * ady 33 | aliftt = alifta + aliftb 34 | alift2 = aliftt * d2 35 | alift = alift2 * d3 36 | 37 | blifta = bdx * bdx 38 | bliftb = bdy * bdy 39 | bliftt = blifta + bliftb 40 | blift = bliftt * d3 41 | 42 | clifta = cdx * cdx 43 | cliftb = cdy * cdy 44 | cliftt = clifta + cliftb 45 | clift = cliftt * d2 46 | 47 | la = alift * bcdet 48 | lb = blift * cadet 49 | lc = clift * abdet 50 | lab2 = lc + lb 51 | lab = lab2 * d1 52 | 53 | L = lab + la 54 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/incircle_indirect_IIII.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,d1) 2 | genericPoint(p2:l2x,l2y,d2) 3 | genericPoint(p3:l3x,l3y,d3) 4 | genericPoint(p4:l4x,l4y,d4) 5 | l1xt = l1x * d4 6 | l1yt = l1y * d4 7 | l2xt = l2x * d4 8 | l2yt = l2y * d4 9 | l3xt = l3x * d4 10 | l3yt = l3y * d4 11 | l4x1 = l4x * d1 12 | l4y1 = l4y * d1 13 | adx = l1xt - l4x1 14 | ady = l1yt - l4y1 15 | l4x2 = l4x * d2 16 | l4y2 = l4y * d2 17 | bdx = l2xt - l4x2 18 | bdy = l2yt - l4y2 19 | l4x3 = l4x * d3 20 | l4y3 = l4y * d3 21 | cdx = l3xt - l4x3 22 | cdy = l3yt - l4y3 23 | 24 | abdeta = adx * bdy 25 | abdetb = bdx * ady 26 | abdet = abdeta - abdetb 27 | 28 | bcdeta = bdx * cdy 29 | bcdetb = cdx * bdy 30 | bcdet = bcdeta - bcdetb 31 | 32 | cadeta = cdx * ady 33 | cadetb = adx * cdy 34 | cadet = cadeta - cadetb 35 | 36 | alifta = adx * adx 37 | aliftb = ady * ady 38 | aliftt = alifta + aliftb 39 | alift2 = aliftt * d2 40 | alift = alift2 * d3 41 | 42 | blifta = bdx * bdx 43 | bliftb = bdy * bdy 44 | bliftt = blifta + bliftb 45 | blift = bliftt * d3 46 | 47 | clifta = cdx * cdx 48 | cliftb = cdy * cdy 49 | cliftt = clifta + cliftb 50 | clift = cliftt * d2 51 | 52 | la = alift * bcdet 53 | lb = blift * cadet 54 | lc = clift * abdet 55 | lab2 = lc + lb 56 | lab = lab2 * d1 57 | 58 | L = lab + la 59 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/incirclexy_indirect_IEEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | pbx pby pcx pcy pdx pdy 3 | 4 | pdxt = pdx * d1 5 | pdyt = pdy * d1 6 | adx = l1x - pdxt 7 | ady = l1y - pdyt 8 | bdx = pbx - pdx 9 | bdy = pby - pdy 10 | cdx = pcx - pdx 11 | cdy = pcy - pdy 12 | 13 | abdeta = adx * bdy 14 | abdetb = bdx * ady 15 | abdet = abdeta - abdetb 16 | 17 | bcdeta = bdx * cdy 18 | bcdetb = cdx * bdy 19 | bcdet = bcdeta - bcdetb 20 | 21 | cadeta = cdx * ady 22 | cadetb = adx * cdy 23 | cadet = cadeta - cadetb 24 | 25 | alifta = adx * adx 26 | aliftb = ady * ady 27 | alift = alifta + aliftb 28 | 29 | blifta = bdx * bdx 30 | bliftb = bdy * bdy 31 | blift = blifta + bliftb 32 | 33 | clifta = cdx * cdx 34 | cliftb = cdy * cdy 35 | clift = clifta + cliftb 36 | 37 | la = alift * bcdet 38 | lbt = blift * cadet 39 | lb = lbt * d1 40 | lct = clift * abdet 41 | lc = lct * d1 42 | lab = la + lb 43 | 44 | L = lab + lc 45 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/incirclexy_indirect_IIEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | pcx pcy pdx pdy 4 | 5 | pdx1 = pdx * d1 6 | pdy1 = pdy * d1 7 | adx = l1x - pdx1 8 | ady = l1y - pdy1 9 | pdx2 = pdx * d2 10 | pdy2 = pdy * d2 11 | bdx = l2x - pdx2 12 | bdy = l2y - pdy2 13 | cdx = pcx - pdx 14 | cdy = pcy - pdy 15 | 16 | abdeta = adx * bdy 17 | abdetb = bdx * ady 18 | abdet = abdeta - abdetb 19 | 20 | bcdeta = bdx * cdy 21 | bcdetb = cdx * bdy 22 | bcdet = bcdeta - bcdetb 23 | 24 | cadeta = cdx * ady 25 | cadetb = adx * cdy 26 | cadet = cadeta - cadetb 27 | 28 | alifta = adx * adx 29 | aliftb = ady * ady 30 | aliftt = alifta + aliftb 31 | alift = aliftt * d2 32 | 33 | blifta = bdx * bdx 34 | bliftb = bdy * bdy 35 | blift = blifta + bliftb 36 | 37 | clifta = cdx * cdx 38 | cliftb = cdy * cdy 39 | cliftt = clifta + cliftb 40 | clift = cliftt * d2 41 | 42 | la = alift * bcdet 43 | lb = blift * cadet 44 | lc = clift * abdet 45 | lab = lc + lb 46 | lab2 = lab * d1 47 | 48 | L = lab2 + la 49 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/incirclexy_indirect_IIIE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | genericPoint(p3:l3x,l3y,l3z,d3) 4 | pdx pdy 5 | 6 | pdx1 = pdx * d1 7 | pdy1 = pdy * d1 8 | adx = l1x - pdx1 9 | ady = l1y - pdy1 10 | pdx2 = pdx * d2 11 | pdy2 = pdy * d2 12 | bdx = l2x - pdx2 13 | bdy = l2y - pdy2 14 | pdx3 = pdx * d3 15 | pdy3 = pdy * d3 16 | cdx = l3x - pdx3 17 | cdy = l3y - pdy3 18 | 19 | abdeta = adx * bdy 20 | abdetb = bdx * ady 21 | abdet = abdeta - abdetb 22 | 23 | bcdeta = bdx * cdy 24 | bcdetb = cdx * bdy 25 | bcdet = bcdeta - bcdetb 26 | 27 | cadeta = cdx * ady 28 | cadetb = adx * cdy 29 | cadet = cadeta - cadetb 30 | 31 | alifta = adx * adx 32 | aliftb = ady * ady 33 | aliftt = alifta + aliftb 34 | alift2 = aliftt * d2 35 | alift = alift2 * d3 36 | 37 | blifta = bdx * bdx 38 | bliftb = bdy * bdy 39 | bliftt = blifta + bliftb 40 | blift = bliftt * d3 41 | 42 | clifta = cdx * cdx 43 | cliftb = cdy * cdy 44 | cliftt = clifta + cliftb 45 | clift = cliftt * d2 46 | 47 | la = alift * bcdet 48 | lb = blift * cadet 49 | lc = clift * abdet 50 | lab2 = lc + lb 51 | lab = lab2 * d1 52 | 53 | L = lab + la 54 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/incirclexy_indirect_IIII.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | genericPoint(p3:l3x,l3y,l3z,d3) 4 | genericPoint(p4:l4x,l4y,l4z,d4) 5 | 6 | l1xt = l1x * d4 7 | l1yt = l1y * d4 8 | l2xt = l2x * d4 9 | l2yt = l2y * d4 10 | l3xt = l3x * d4 11 | l3yt = l3y * d4 12 | l4x1 = l4x * d1 13 | l4y1 = l4y * d1 14 | adx = l1xt - l4x1 15 | ady = l1yt - l4y1 16 | l4x2 = l4x * d2 17 | l4y2 = l4y * d2 18 | bdx = l2xt - l4x2 19 | bdy = l2yt - l4y2 20 | l4x3 = l4x * d3 21 | l4y3 = l4y * d3 22 | cdx = l3xt - l4x3 23 | cdy = l3yt - l4y3 24 | 25 | abdeta = adx * bdy 26 | abdetb = bdx * ady 27 | abdet = abdeta - abdetb 28 | 29 | bcdeta = bdx * cdy 30 | bcdetb = cdx * bdy 31 | bcdet = bcdeta - bcdetb 32 | 33 | cadeta = cdx * ady 34 | cadetb = adx * cdy 35 | cadet = cadeta - cadetb 36 | 37 | alifta = adx * adx 38 | aliftb = ady * ady 39 | aliftt = alifta + aliftb 40 | alift2 = aliftt * d2 41 | alift = alift2 * d3 42 | 43 | blifta = bdx * bdx 44 | bliftb = bdy * bdy 45 | bliftt = blifta + bliftb 46 | blift = bliftt * d3 47 | 48 | clifta = cdx * cdx 49 | cliftb = cdy * cdy 50 | cliftt = clifta + cliftb 51 | clift = cliftt * d2 52 | 53 | la = alift * bcdet 54 | lb = blift * cadet 55 | lc = clift * abdet 56 | lab2 = lc + lb 57 | lab = lab2 * d1 58 | 59 | L = lab + la 60 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/lambda2d_SSI.txt: -------------------------------------------------------------------------------- 1 | ea1x ea1y ea2x ea2y eb1x eb1y eb2x eb2y 2 | t1a = ea1x * ea2y 3 | t1b = ea2x * ea1y 4 | t1 = t1a - t1b 5 | tx2 = eb1x - eb2x 6 | t3a = eb1x * eb2y 7 | t3b = eb2x * eb1y 8 | t3 = t3a - t3b 9 | tx4 = ea1x - ea2x 10 | ty2 = eb1y - eb2y 11 | ty4 = ea1y - ea2y 12 | lxa = t1 * tx2 13 | lxb = t3 * tx4 14 | lambda_x = lxa - lxb 15 | lya = t1 * ty2 16 | lyb = t3 * ty4 17 | lambda_y = lya - lyb 18 | deta = tx4 * ty2 19 | detb = tx2 * ty4 20 | lambda_det = deta - detb 21 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/lambda3d_BPT.txt: -------------------------------------------------------------------------------- 1 | px py pz qx qy qz rx ry rz u v 2 | dvx = px - rx 3 | dvy = py - ry 4 | dvz = pz - rz 5 | dux = qx - rx 6 | duy = qy - ry 7 | duz = qz - rz 8 | evx = dvx * v 9 | evy = dvy * v 10 | evz = dvz * v 11 | eux = dux * u 12 | euy = duy * u 13 | euz = duz * u 14 | rux = eux + rx 15 | ruy = euy + ry 16 | ruz = euz + rz 17 | lambda_x = evx + rux 18 | lambda_y = evy + ruy 19 | lambda_z = evz + ruz 20 | lambda_d = 1 21 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/lambda3d_LNC.txt: -------------------------------------------------------------------------------- 1 | px py pz qx qy qz t 2 | vx = px - qx 3 | vy = py - qy 4 | vz = pz - qz 5 | vxt = vx * t 6 | vyt = vy * t 7 | vzt = vz * t 8 | lambda_x = px - vxt 9 | lambda_y = py - vyt 10 | lambda_z = pz - vzt 11 | lambda_d = 1 12 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/lambda3d_LPI.txt: -------------------------------------------------------------------------------- 1 | px py pz qx qy qz rx ry rz sx sy sz tx ty tz 2 | a11 = px - qx 3 | a12 = py - qy 4 | a13 = pz - qz 5 | a21 = sx - rx 6 | a22 = sy - ry 7 | a23 = sz - rz 8 | a31 = tx - rx 9 | a32 = ty - ry 10 | a33 = tz - rz 11 | tv1 = a22 * a33 12 | tv2 = a23 * a32 13 | a2233 = tv1 - tv2 14 | tv3 = a21 * a33 15 | tv4 = a23 * a31 16 | a2133 = tv3 - tv4 17 | tv5 = a21 * a32 18 | tv6 = a22 * a31 19 | a2132 = tv5 - tv6 20 | tv7 = a11 * a2233 21 | tv8 = a12 * a2133 22 | tv9 = a13 * a2132 23 | tt1 = tv7 - tv8 24 | ld = tt1 + tv9 25 | px_rx = px - rx 26 | py_ry = py - ry 27 | pz_rz = pz - rz 28 | tt2 = py_ry * a2133 29 | tt3 = px_rx * a2233 30 | tt4 = pz_rz * a2132 31 | tt5 = tt3 + tt4 32 | n = tt5 - tt2 33 | ax = a11 * n 34 | ay = a12 * n 35 | az = a13 * n 36 | dpx = ld * px 37 | dpy = ld * py 38 | dpz = ld * pz 39 | lambda_x = dpx - ax 40 | lambda_y = dpy - ay 41 | lambda_z = dpz - az 42 | lambda_d = tt1 + tv9 43 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/lambda3d_TPI.txt: -------------------------------------------------------------------------------- 1 | ov1x ov1y ov1z ov2x ov2y ov2z ov3x ov3y ov3z ow1x ow1y ow1z ow2x ow2y ow2z ow3x ow3y ow3z ou1x ou1y ou1z ou2x ou2y ou2z ou3x ou3y ou3z 2 | v3x = ov3x - ov2x 3 | v3y = ov3y - ov2y 4 | v3z = ov3z - ov2z 5 | v2x = ov2x - ov1x 6 | v2y = ov2y - ov1y 7 | v2z = ov2z - ov1z 8 | w3x = ow3x - ow2x 9 | w3y = ow3y - ow2y 10 | w3z = ow3z - ow2z 11 | w2x = ow2x - ow1x 12 | w2y = ow2y - ow1y 13 | w2z = ow2z - ow1z 14 | u3x = ou3x - ou2x 15 | u3y = ou3y - ou2y 16 | u3z = ou3z - ou2z 17 | u2x = ou2x - ou1x 18 | u2y = ou2y - ou1y 19 | u2z = ou2z - ou1z 20 | nvx1 = v2y * v3z 21 | nvx2 = v2z * v3y 22 | nvx = nvx1 - nvx2 23 | nvy1 = v3x * v2z 24 | nvy2 = v3z * v2x 25 | nvy = nvy1 - nvy2 26 | nvz1 = v2x * v3y 27 | nvz2 = v2y * v3x 28 | nvz = nvz1 - nvz2 29 | nwx1 = w2y * w3z 30 | nwx2 = w2z * w3y 31 | nwx = nwx1 - nwx2 32 | nwy1 = w3x * w2z 33 | nwy2 = w3z * w2x 34 | nwy = nwy1 - nwy2 35 | nwz1 = w2x * w3y 36 | nwz2 = w2y * w3x 37 | nwz = nwz1 - nwz2 38 | nux1 = u2y * u3z 39 | nux2 = u2z * u3y 40 | nux = nux1 - nux2 41 | nuy1 = u3x * u2z 42 | nuy2 = u3z * u2x 43 | nuy = nuy1 - nuy2 44 | nuz1 = u2x * u3y 45 | nuz2 = u2y * u3x 46 | nuz = nuz1 - nuz2 47 | nwyuz1 = nwy * nuz 48 | nwyuz2 = nwz * nuy 49 | nwyuz = nwyuz1 - nwyuz2 50 | nwxuz1 = nwx * nuz 51 | nwxuz2 = nwz * nux 52 | nwxuz = nwxuz1 - nwxuz2 53 | nwxuy1 = nwx * nuy 54 | nwxuy2 = nwy * nux 55 | nwxuy = nwxuy1 - nwxuy2 56 | nvyuz1 = nvy * nuz 57 | nvyuz2 = nvz * nuy 58 | nvyuz = nvyuz1 - nvyuz2 59 | nvxuz1 = nvx * nuz 60 | nvxuz2 = nvz * nux 61 | nvxuz = nvxuz1 - nvxuz2 62 | nvxuy1 = nvx * nuy 63 | nvxuy2 = nvy * nux 64 | nvxuy = nvxuy1 - nvxuy2 65 | nvywz1 = nvy * nwz 66 | nvywz2 = nvz * nwy 67 | nvywz = nvywz1 - nvywz2 68 | nvxwz1 = nvx * nwz 69 | nvxwz2 = nvz * nwx 70 | nvxwz = nvxwz1 - nvxwz2 71 | nvxwy1 = nvx * nwy 72 | nvxwy2 = nvy * nwx 73 | nvxwy = nvxwy1 - nvxwy2 74 | p1a = nvx * ov1x 75 | p1b = nvy * ov1y 76 | p1c = nvz * ov1z 77 | p1ab = p1a + p1b 78 | p1 = p1ab + p1c 79 | p2a = nwx * ow1x 80 | p2b = nwy * ow1y 81 | p2c = nwz * ow1z 82 | p2ab = p2a + p2b 83 | p2 = p2ab + p2c 84 | p3a = nux * ou1x 85 | p3b = nuy * ou1y 86 | p3c = nuz * ou1z 87 | p3ab = p3a + p3b 88 | p3 = p3ab + p3c 89 | lxa = p1 * nwyuz 90 | lxb = p3 * nvywz 91 | lxc = p2 * nvyuz 92 | lxab = lxa + lxb 93 | lambda_x = lxab - lxc 94 | lya = p2 * nvxuz 95 | lyb = p3 * nvxwz 96 | lyc = p1 * nwxuz 97 | lybc = lyc + lyb 98 | lambda_y = lya - lybc 99 | lza = p3 * nvxwy 100 | lzb = p1 * nwxuy 101 | lzc = p2 * nvxuy 102 | lzab = lza + lzb 103 | lambda_z = lzab - lzc 104 | da = nvx * nwyuz 105 | db = nvz * nwxuy 106 | dc = nvy * nwxuz 107 | dab = da + db 108 | lambda_d = dab - dc 109 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/lessThanOnX_IE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | bx 3 | 4 | dbx = bx * d1 5 | kx = l1x - dbx 6 | 7 | // SIGN d1 8 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/lessThanOnX_II.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | k1 = d2 * l1x 4 | k2 = d1 * l2x 5 | kx = k1 - k2 6 | 7 | // SIGN d1 d2 8 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/lessThanOnY_IE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | by 3 | 4 | dby = by * d1 5 | ky = l1y - dby 6 | 7 | // SIGN d1 8 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/lessThanOnY_II.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | k1 = d2 * l1y 4 | k2 = d1 * l2y 5 | ky = k1 - k2 6 | 7 | // SIGN d1 d2 8 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/lessThanOnZ_IE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | bz 3 | 4 | dbz = bz * d1 5 | kz = l1z - dbz 6 | 7 | // SIGN d1 8 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/lessThanOnZ_II.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | k1 = d2 * l1z 4 | k2 = d1 * l2z 5 | kz = k1 - k2 6 | 7 | // SIGN d1 d2 8 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient2d_indirect_IEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,d1) 2 | p2x p2y p3x p3y 3 | 4 | t1x = p2y - p3y 5 | t1y = p3x - p2x 6 | e2 = l1x * t1x 7 | e3 = l1y * t1y 8 | e = e2 + e3 9 | pr1 = p2x * p3y 10 | pr2 = p2y * p3x 11 | pr = pr1 - pr2 12 | dpr = d1 * pr 13 | det = dpr + e 14 | 15 | // SIGN d1 16 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient2d_indirect_IIE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,d1) 2 | genericPoint(p2:l2x,l2y,d2) 3 | p3x p3y 4 | 5 | a = d1 * l2x 6 | b = d2 * l1x 7 | c = d1 * p3y 8 | e = d1 * l2y 9 | f = d2 * l1y 10 | g = d1 * p3x 11 | ab = a - b 12 | cd = c - l1y 13 | ef = e - f 14 | gh = g - l1x 15 | abcd = ab * cd 16 | efgh = ef * gh 17 | L = abcd - efgh 18 | 19 | // SIGN d2 20 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient2d_indirect_III.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,d1) 2 | genericPoint(p2:l2x,l2y,d2) 3 | genericPoint(p3:l3x,l3y,d3) 4 | 5 | a = d1 * l2x 6 | b = d2 * l1x 7 | c = d1 * l3y 8 | d = d3 * l1y 9 | e = d1 * l2y 10 | f = d2 * l1y 11 | g = d1 * l3x 12 | h = d3 * l1x 13 | ab = a - b 14 | cd = c - d 15 | ef = e - f 16 | gh = g - h 17 | abcd = ab * cd 18 | efgh = ef * gh 19 | L = abcd - efgh 20 | 21 | // SIGN d2 d3 22 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient2dxy_indirect_IEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | p2x p2y // Explicit point 1 3 | p3x p3y // Explicit point 2 4 | 5 | t1x = p2y - p3y 6 | t1y = p3x - p2x 7 | e2 = l1x * t1x 8 | e3 = l1y * t1y 9 | e = e2 + e3 10 | pr1 = p2x * p3y 11 | pr2 = p2y * p3x 12 | pr = pr1 - pr2 13 | dpr = d1 * pr 14 | det = dpr + e 15 | 16 | // SIGN d1 17 | 18 | // det = d1 * (p2x * p3y - p2y * p3x) + l1x * (p2y - p3y) + l1y * (p3x - p2x) 19 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient2dxy_indirect_IIE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | op3x op3y // Explicit point 4 | 5 | //Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * op3y 9 | e = d1 * l2y 10 | f = d2 * l1y 11 | g = d1 * op3x 12 | ab = a - b 13 | cd = c - l1y 14 | ef = e - f 15 | gh = g - l1x 16 | abcd = ab * cd 17 | efgh = ef * gh 18 | L = abcd - efgh 19 | 20 | // SIGN d2 21 | 22 | // L = (d1 * l2x - d2 * l1x) * (d1 * op3y - l1y) - (d1 * l2y - d2 * l1y) * (d1 * op3x - l1x) 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient2dxy_indirect_III.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | genericPoint(p3:l3x,l3y,l3z,d3) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | 24 | // L = (d1 * l2x - d2 * l1x) * (d1 * l3y - d3 * l1y) - (d1 * l2y - d2 * l1y) * (d1 * l3x - d3 * l1x) 25 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient2dyz_indirect_IEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1z,l1x,l1y,d1) 2 | p2x p2y // Explicit point 1 3 | p3x p3y // Explicit point 2 4 | 5 | t1x = p2y - p3y 6 | t1y = p3x - p2x 7 | e2 = l1x * t1x 8 | e3 = l1y * t1y 9 | e = e2 + e3 10 | pr1 = p2x * p3y 11 | pr2 = p2y * p3x 12 | pr = pr1 - pr2 13 | dpr = d1 * pr 14 | det = dpr + e 15 | 16 | // SIGN d1 17 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient2dyz_indirect_IIE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1z,l1x,l1y,d1) 2 | genericPoint(p2:l2z,l2x,l2y,d2) 3 | op3x op3y // Explicit point 4 | 5 | //Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * op3y 9 | e = d1 * l2y 10 | f = d2 * l1y 11 | g = d1 * op3x 12 | ab = a - b 13 | cd = c - l1y 14 | ef = e - f 15 | gh = g - l1x 16 | abcd = ab * cd 17 | efgh = ef * gh 18 | L = abcd - efgh 19 | 20 | // SIGN d2 21 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient2dyz_indirect_III.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1z,l1x,l1y,d1) 2 | genericPoint(p2:l2z,l2x,l2y,d2) 3 | genericPoint(p3:l3z,l3x,l3y,d3) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient2dzx_indirect_IEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1y,l1z,l1x,d1) 2 | p2x p2y // Explicit point 1 3 | p3x p3y // Explicit point 2 4 | 5 | t1x = p2y - p3y 6 | t1y = p3x - p2x 7 | e2 = l1x * t1x 8 | e3 = l1y * t1y 9 | e = e2 + e3 10 | pr1 = p2x * p3y 11 | pr2 = p2y * p3x 12 | pr = pr1 - pr2 13 | dpr = d1 * pr 14 | det = dpr + e 15 | 16 | // SIGN d1 17 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient2dzx_indirect_IIE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1y,l1z,l1x,d1) 2 | genericPoint(p2:l2y,l2z,l2x,d2) 3 | op3x op3y // Explicit point 4 | 5 | //Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * op3y 9 | e = d1 * l2y 10 | f = d2 * l1y 11 | g = d1 * op3x 12 | ab = a - b 13 | cd = c - l1y 14 | ef = e - f 15 | gh = g - l1x 16 | abcd = ab * cd 17 | efgh = ef * gh 18 | L = abcd - efgh 19 | 20 | // SIGN d2 21 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient2dzx_indirect_III.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1y,l1z,l1x,d1) 2 | genericPoint(p2:l2y,l2z,l2x,d2) 3 | genericPoint(p3:l3y,l3z,l3x,d3) 4 | 5 | // Orient2d 6 | a = d1 * l2x 7 | b = d2 * l1x 8 | c = d1 * l3y 9 | d = d3 * l1y 10 | e = d1 * l2y 11 | f = d2 * l1y 12 | g = d1 * l3x 13 | h = d3 * l1x 14 | ab = a - b 15 | cd = c - d 16 | ef = e - f 17 | gh = g - h 18 | abcd = ab * cd 19 | efgh = ef * gh 20 | L = abcd - efgh 21 | 22 | // SIGN d2 d3 23 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient3d_indirect_IEEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | ax ay az bx by bz cx cy cz 3 | 4 | dcx = d1 * cx 5 | dcy = d1 * cy 6 | dcz = d1 * cz 7 | ix_cx = l1x - dcx 8 | iy_cy = l1y - dcy 9 | ax_cx = ax - cx 10 | ay_cy = ay - cy 11 | az_cz = az - cz 12 | iz_cz = l1z - dcz 13 | bx_cx = bx - cx 14 | by_cy = by - cy 15 | bz_cz = bz - cz 16 | tmc_a = ix_cx * ay_cy 17 | tmc_b = iy_cy * ax_cx 18 | m01 = tmc_a - tmc_b 19 | tmi_a = ix_cx * az_cz 20 | tmi_b = iz_cz * ax_cx 21 | m02 = tmi_a - tmi_b 22 | tma_a = iy_cy * az_cz 23 | tma_b = iz_cz * ay_cy 24 | m12 = tma_a - tma_b 25 | mt1 = m01 * bz_cz 26 | mt2 = m02 * by_cy 27 | mt3 = m12 * bx_cx 28 | mtt = mt2 - mt1 29 | m012 = mtt - mt3 30 | 31 | // SIGN d1 32 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient3d_indirect_IIEE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | p3x p3y p3z 4 | p4x p4y p4z 5 | 6 | d1p4x = d1 * p4x 7 | d1p4y = d1 * p4y 8 | d1p4z = d1 * p4z 9 | d2p4x = d2 * p4x 10 | d2p4y = d2 * p4y 11 | d2p4z = d2 * p4z 12 | 13 | p1p4x = l1x - d1p4x 14 | p1p4y = l1y - d1p4y 15 | p1p4z = l1z - d1p4z 16 | p2p4x = l2x - d2p4x 17 | p2p4y = l2y - d2p4y 18 | p2p4z = l2z - d2p4z 19 | p3p4x = p3x - p4x 20 | p3p4y = p3y - p4y 21 | p3p4z = p3z - p4z 22 | 23 | tmc_a = p1p4x * p2p4y 24 | tmc_b = p1p4y * p2p4x 25 | m01 = tmc_a - tmc_b 26 | tmi_a = p1p4x * p2p4z 27 | tmi_b = p1p4z * p2p4x 28 | m02 = tmi_a - tmi_b 29 | tma_a = p1p4y * p2p4z 30 | tma_b = p1p4z * p2p4y 31 | m12 = tma_a - tma_b 32 | mt1 = m01 * p3p4z 33 | mt2 = m02 * p3p4y 34 | mt3 = m12 * p3p4x 35 | mtt = mt2 - mt1 36 | m012 = mtt - mt3 37 | 38 | // SIGN d1 d2 39 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient3d_indirect_IIIE.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | genericPoint(p3:l3x,l3y,l3z,d3) 4 | p4x p4y p4z 5 | 6 | d1p4x = d1 * p4x 7 | d1p4y = d1 * p4y 8 | d1p4z = d1 * p4z 9 | d2p4x = d2 * p4x 10 | d2p4y = d2 * p4y 11 | d2p4z = d2 * p4z 12 | d3p4x = d3 * p4x 13 | d3p4y = d3 * p4y 14 | d3p4z = d3 * p4z 15 | 16 | p1p4x = l1x - d1p4x 17 | p1p4y = l1y - d1p4y 18 | p1p4z = l1z - d1p4z 19 | p2p4x = l2x - d2p4x 20 | p2p4y = l2y - d2p4y 21 | p2p4z = l2z - d2p4z 22 | p3p4x = l3x - d3p4x 23 | p3p4y = l3y - d3p4y 24 | p3p4z = l3z - d3p4z 25 | 26 | tmc_a = p1p4x * p2p4y 27 | tmc_b = p1p4y * p2p4x 28 | m01 = tmc_a - tmc_b 29 | tmi_a = p1p4x * p2p4z 30 | tmi_b = p1p4z * p2p4x 31 | m02 = tmi_a - tmi_b 32 | tma_a = p1p4y * p2p4z 33 | tma_b = p1p4z * p2p4y 34 | m12 = tma_a - tma_b 35 | mt1 = m01 * p3p4z 36 | mt2 = m02 * p3p4y 37 | mt3 = m12 * p3p4x 38 | mtt = mt2 - mt1 39 | m012 = mtt - mt3 40 | 41 | // SIGN d1 d2 d3 42 | -------------------------------------------------------------------------------- /JPCK/predicates/indirect/orient3d_indirect_IIII.txt: -------------------------------------------------------------------------------- 1 | genericPoint(p1:l1x,l1y,l1z,d1) 2 | genericPoint(p2:l2x,l2y,l2z,d2) 3 | genericPoint(p3:l3x,l3y,l3z,d3) 4 | genericPoint(p4:l4x,l4y,l4z,d4) 5 | 6 | d1p4x = d1 * l4x 7 | d1p4y = d1 * l4y 8 | d1p4z = d1 * l4z 9 | d2p4x = d2 * l4x 10 | d2p4y = d2 * l4y 11 | d2p4z = d2 * l4z 12 | d3p4x = d3 * l4x 13 | d3p4y = d3 * l4y 14 | d3p4z = d3 * l4z 15 | 16 | d4l1x = d4 * l1x 17 | d4l1y = d4 * l1y 18 | d4l1z = d4 * l1z 19 | d4l2x = d4 * l2x 20 | d4l2y = d4 * l2y 21 | d4l2z = d4 * l2z 22 | d4l3x = d4 * l3x 23 | d4l3y = d4 * l3y 24 | d4l3z = d4 * l3z 25 | 26 | p1p4x = d4l1x - d1p4x 27 | p1p4y = d4l1y - d1p4y 28 | p1p4z = d4l1z - d1p4z 29 | p2p4x = d4l2x - d2p4x 30 | p2p4y = d4l2y - d2p4y 31 | p2p4z = d4l2z - d2p4z 32 | p3p4x = d4l3x - d3p4x 33 | p3p4y = d4l3y - d3p4y 34 | p3p4z = d4l3z - d3p4z 35 | 36 | tmc_a = p1p4x * p2p4y 37 | tmc_b = p1p4y * p2p4x 38 | m01 = tmc_a - tmc_b 39 | tmi_a = p1p4x * p2p4z 40 | tmi_b = p1p4z * p2p4x 41 | m02 = tmi_a - tmi_b 42 | tma_a = p1p4y * p2p4z 43 | tma_b = p1p4z * p2p4y 44 | m12 = tma_a - tma_b 45 | mt1 = m01 * p3p4z 46 | mt2 = m02 * p3p4y 47 | mt3 = m12 * p3p4x 48 | mtt = mt2 - mt1 49 | m012 = mtt - mt3 50 | 51 | // SIGN d1 d2 d3 d4 52 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ---------------------------- 2 | Indirect Predicates for Geometric Constructions 3 | ---------------------------- 4 | 5 | by Marco Attene 6 | 7 | Consiglio Nazionale delle Ricerche 8 | Istituto di Matematica Applicata e Tecnologie Informatiche 9 | Sezione di Genova 10 | IMATI-GE / CNR 11 | 12 | This software implements fast and guaranteed floating point geometric predicates, 13 | including novel indirect predicates as described in the following article: 14 | 15 | M. Attene. Indirect Predicates for Geometric Constructions. In Elsevier Computer-Aided Design (2020, https://doi.org/10.1016/j.cad.2020.102856). 16 | 17 | ------------------- 18 | Citation policy 19 | -------------------- 20 | You are free to use this software according to the licensing terms specified at the end of this document. 21 | If you use it for research purposes and produce publications, please cite the following paper 22 | that describes the underlying theory: 23 | 24 | > M. Attene. Indirect Predicates for Geometric Constructions. In Elsevier Computer-Aided Design (2020). 25 | 26 | ------------------- 27 | System Requirements 28 | -------------------- 29 | The software has been tested on 64 bit PCs running: 30 | - Microsoft Windows OS with MSVC 31 | - Linux with standard gcc/g++ development environment 32 | - Mac OSX with CLANG. 33 | 34 | -------------------- 35 | Compile a test 36 | -------------------- 37 | 1) Open a command prompt 38 | 2) Enter the directory containing this README file 39 | 3) cmake -S . -B build/ -D CMAKE_BUILD_TYPE=Release 40 | 4) cmake --build build/ --config Release 41 | 42 | You may want to set the target architecture to make the compiler optimize the code for your hardware. 43 | To do that, edit the CMakeLists.txt file accordingly before running the commands hereabove. 44 | By default, CMakeLists is configured for x86-64 architectures with AVX2 support. 45 | 46 | --------------------- 47 | Generic usage 48 | --------------------- 49 | The repository provides a header-only C++ library. 50 | To use in your code: 51 | 1) Add the "Indirect_Predicates-master/include" path to the list of paths where your compiler searches header files 52 | 2) Include "implicit_point.h" in your code 53 | 3) ALWAYS tell your compiler to use the following directives: 54 | MSVC: /fp:strict /Oi /D _CRT_SECURE_NO_WARNINGS 55 | GCC/G++/CLANG: -frounding-math -O2 56 | 4) Tell your compiler whether your CPU supports SSE2/AVX2/ARMNEON instructions 57 | MSVC: /arch:SSE2 or /arch:AVX2 or /arch:ARMV8.0 58 | GCC/G++/CLANG: -msse2 or (-mavx2 and -mfma) or -march=armv8-a+simd 59 | 60 | On ARM CPUs supporting NEON instructions you may need to download SIMDE from: 61 | https://github.com/simd-everywhere/simde/archive/refs/heads/master.zip 62 | 63 | As an example, check the CMakeLists.txt provided to compile the test.cpp code. 64 | CMake automatically downloads SIMDE if necessary. 65 | 66 | --------------------- 67 | Copyright and license 68 | --------------------- 69 | 70 | Indirect_Predicates 71 | Authors: Marco Attene 72 | 73 | Copyright(C) 2019: IMATI-GE / CNR 74 | 75 | IMATI-GE / CNR is Consiglio Nazionale delle Ricerche 76 | Istituto di Matematica Applicata e Tecnologie Informatiche 77 | Genova (Italy) 78 | 79 | Indirect_Predicates is free software; you can redistribute it and/or modify 80 | it under the terms of the GNU Lesser General Public License as published 81 | by the Free Software Foundation; either version 3 of the License, or (at 82 | your option) any later version. 83 | 84 | Indirect_Predicates is distributed in the hope that it will be useful, but 85 | WITHOUT ANY WARRANTY; without even the implied warranty of 86 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser 87 | General Public License for more details. 88 | 89 | You should have received a copy of the GNU Lesser General Public License 90 | along with the Indirect_Predicates. If not, see http://www.gnu.org/licenses/. 91 | -------------------------------------------------------------------------------- /test.cpp: -------------------------------------------------------------------------------- 1 | #include "implicit_point.h" 2 | 3 | int main(int argc, char *argv[]) 4 | { 5 | explicitPoint2D a(1, 1), b(3, 3), c(2, 1), d(1, 2); 6 | implicitPoint2D_SSI i(a, b, c, d); 7 | 8 | if (genericPoint::orient2D(a, i, b) == 0) std::cout << "Collinear - Test succeeded.\n"; 9 | else std::cout << "Not collinear - Test failed.\n"; 10 | 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /update_predicates/update_source_code.bat: -------------------------------------------------------------------------------- 1 | DEL indirect_predicates.h 2 | DEL indirect_predicates.hpp 3 | FOR %%f in (..\JPCK\predicates\direct\*.txt) DO ..\JPCK\x64\Release\converter.exe %%f -p 4 | FOR %%f in (..\JPCK\predicates\indirect\*.txt) DO ..\JPCK\x64\Release\converter.exe %%f -p 5 | ECHO.>> indirect_predicates.h 6 | ECHO #include "indirect_predicates.hpp" >> indirect_predicates.h 7 | COPY indirect_predicates.h ..\include 8 | COPY indirect_predicates.hpp ..\include 9 | --------------------------------------------------------------------------------