-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path2022-09-25 20:13:07 (+3) 4e87cd16b5ac689ce55c6bffba32fb3d6432ce6cd9d81876d045d3f3f6a30a43.json
1 lines (1 loc) · 1.85 KB
/
2022-09-25 20:13:07 (+3) 4e87cd16b5ac689ce55c6bffba32fb3d6432ce6cd9d81876d045d3f3f6a30a43.json
1
{"operation":"create-initial-version","id_to":"cac39f54ef35b0aec8ecb64128fb8105aecfb44c2aa6ea7792debb6b1a31b1a8","initial-data":{"name@lisperanto":"getMinimalOffsetForBox","type@lisperanto":"function","module@lisperanto":"lisperanto","programming-language@lisperanto":"javascript","javascript-function-definition@lisperanto":"function(firstBox, secondBox, margin)\r\n{\r\n var offsets = []; \r\n var firstBoxCorners = lisperanto.generateCornersOfTheBox(firstBox);\r\n for (const [key, pointF] of Object.entries(firstBoxCorners)) \r\n {\r\n if(lisperanto.isPointInsideTheBox(pointF, secondBox, margin=2))\r\n {\r\n var escapesFromSecondBox = lisperanto.getVectorsFromBox(pointF, secondBox, margin=2);\r\n var firstBoxVectors = lisperanto.getVectorsFromBox(pointF, firstBox, margin=0);\r\n for (const [key, escapeV] of Object.entries(escapesFromSecondBox)) \r\n {\r\n for (const [key, firstV] of Object.entries(firstBoxVectors)) \r\n {\r\n if(lisperanto.vectorLengthSquared(firstV) > 0.1)\r\n {\r\n if(lisperanto.vectorsAreCoAligned(escapeV, firstV))\r\n {\r\n offsets.push(escapeV);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if(offsets.length == 0)\r\n {\r\n return {x: 0, y: 0};\r\n }\r\n else\r\n {\r\n var minimalOffset = offsets[0];\r\n for (const [key, o] of Object.entries(offsets)) \r\n {\r\n if(lisperanto.vectorLengthSquared(o) < lisperanto.vectorLengthSquared(minimalOffset))\r\n {\r\n minimalOffset = o;\r\n }\r\n }\r\n return minimalOffset;\r\n }\r\n}"},"time":"2022-09-25 20:13:07 (+3)"}