{"version":9,"randomSeed":"76eb42d90fd7786d6bce971f2eb466ba","graph":{"viewport":{"xmin":-1.0187334703931739,"ymin":-2.2698254633891035,"xmax":9.247512602776707,"ymax":7.746301657832008}},"expressions":{"list":[{"type":"folder","id":"138","title":"setup"},{"type":"text","id":"88","folderId":"138","text":"points of edge chain (wall) to avoid"},{"type":"expression","id":"1","folderId":"138","color":"#c74440","latex":"P=\\left[\\left(7,0\\right),\\left(6,2.5\\right),\\left(3,3\\right),\\left(1.5,1.5\\right),\\left(0,2\\right),\\left(0,0\\right),\\left(2.5,1\\right),\\left(3,2\\right),\\left(5,1.5\\right),\\left(6,0\\right)\\right]","lines":true},{"type":"text","id":"116","folderId":"138","text":"goal point"},{"type":"expression","id":"117","folderId":"138","color":"#6042a6","latex":"G=\\left(6.5,-5.16\\right)"},{"type":"text","id":"140","folderId":"138","text":"initial position and velocity"},{"type":"expression","id":"141","folderId":"138","color":"#000000","latex":"C_{0}=\\left(0.44,1\\right)"},{"type":"expression","id":"142","folderId":"138","color":"#c74440","latex":"V_{0}=\\left(1,-\\frac{1}{2}\\right)","hidden":true},{"type":"text","id":"101","folderId":"138","text":"time step"},{"type":"expression","id":"77","folderId":"138","color":"#388c46","latex":"d_{t}=0.01","slider":{"hardMin":true,"hardMax":true,"min":"0","max":"1"}},{"type":"text","id":"145","folderId":"138","text":"success distance threshold"},{"type":"expression","id":"146","folderId":"138","color":"#6042a6","latex":"K=5"},{"type":"expression","id":"147","color":"#000000","latex":"\\left(x-G.x\\right)^{2}+\\left(y-G.y\\right)^{2}=K^{2}"},{"type":"text","id":"90","text":"current position"},{"type":"expression","id":"72","color":"#388c46","latex":"C=\\left(5.770845159065029,1.8288833996701006\\right)"},{"type":"text","id":"93","text":"current velocity"},{"type":"expression","id":"74","color":"#000000","latex":"V=\\left(0.5373296455895152,-0.8433723092268597\\right)","hidden":true},{"type":"text","id":"95","text":"velocity indicator"},{"type":"expression","id":"75","color":"#388c46","latex":"\\operatorname{polygon}\\left(C,C+V\\right)","fill":false},{"type":"text","id":"97","text":"simulation step: do nothing if colliding, increment position by velocity, set by navigator"},{"type":"expression","id":"76","color":"#2d70b3","latex":"S=\\left\\{\\operatorname{distance}\\left(C,G\\right)\\le K:\\left(C\\to C\\right),I\\left(C,V,P\\right)=0:\\left(C\\to C+d_{t}V,V\\to N\\left(J\\left(C,V,P\\right)\\right),Q\\to\\left(\\operatorname{random}\\left(\\right),\\operatorname{random}\\left(\\right)\\right)\\right)\\right\\}"},{"type":"text","id":"99","text":"reset position and velocity"},{"type":"expression","id":"84","color":"#000000","latex":"R=\\left(C\\to C_{0},V\\to V_{0}\\right)"},{"type":"expression","id":"135","color":"#c74440","latex":"\\left(0,7\\right)","showLabel":true,"label":"Reset","labelSize":"2","labelOrientation":"right","pointOpacity":"1","pointSize":"30","clickableInfo":{"enabled":true,"latex":"R"}},{"type":"text","id":"103","text":"is there a collision? (an intersection between the particle's immediate path and the walls)"},{"type":"expression","id":"79","color":"#000000","latex":"I\\left(c,v,p\\right)=\\sum_{n=1}^{\\operatorname{length}\\left(p\\right)-1}\\left(\\left|\\operatorname{sgn}\\left(L\\left(p\\left[n\\right],p\\left[n+1\\right],c\\right)\\right)-\\operatorname{sgn}\\left(L\\left(p\\left[n\\right],p\\left[n+1\\right],c+d_{t}v\\right)\\right)\\right|\\cdot\\left\\{0\\le\\frac{D\\left(c-p\\left[n\\right],p\\left[n+1\\right]-p\\left[n\\right]\\right)}{D\\left(p\\left[n+1\\right]-p\\left[n\\right],p\\left[n+1\\right]-p\\left[n\\right]\\right)}\\le1,0\\right\\}\\right)"},{"type":"text","id":"134","text":"scoring of a navigation algorithm"},{"type":"expression","id":"132","color":"#6042a6","latex":"M=\\left\\{\\operatorname{distance}\\left(C,G\\right)\\le K:1000,\\operatorname{round}\\left(100\\ln\\left(\\frac{1}{\\operatorname{distance}\\left(C,G\\right)}\\right)+500\\right)\\right\\}"},{"type":"expression","id":"131","color":"#000000","latex":"\\left(0,5\\right)\\left\\{I\\left(C,V,P\\right)\\ge0\\right\\}","showLabel":true,"label":"Score: ${M}","hidden":true,"labelSize":"2","labelOrientation":"right","pointOpacity":"1"},{"type":"text","id":"107","text":"implicit form of a line with points A and B"},{"type":"expression","id":"82","color":"#388c46","latex":"L\\left(A,B,v\\right)=\\left(v.y-A.y\\right)\\left(B.x-A.x\\right)-\\left(v.x-A.x\\right)\\left(B.y-A.y\\right)"},{"type":"text","id":"109","text":"acceleration selector"},{"type":"folder","id":"121","title":"navigation algorithm: position and wall vertices to velocity"},{"type":"text","id":"123","folderId":"121","text":"repulsion on A from B"},{"type":"expression","id":"119","folderId":"121","color":"#c74440","latex":"J_{R}\\left(A,B\\right)=\\left\\{\\operatorname{distance}\\left(A,B\\right)\\le0.1:1,1.1\\ge\\operatorname{distance}\\left(A,B\\right)\\ge1:-1,0\\right\\}\\frac{A-B}{\\operatorname{distance}\\left(A,B\\right)^{6}}"},{"type":"text","id":"125","folderId":"121","text":"total of a list of points"},{"type":"expression","id":"126","folderId":"121","color":"#000000","latex":"T\\left(v\\right)=\\left(\\sum_{n=1}^{\\operatorname{length}\\left(v\\right)}v\\left[n\\right].x,\\sum_{n=1}^{\\operatorname{length}\\left(v\\right)}v\\left[n\\right].y\\right)"},{"type":"text","id":"128","folderId":"121","text":"summation component of acceleration"},{"type":"expression","id":"118","folderId":"121","color":"#000000","latex":"J_{S}\\left(c,v,p\\right)=T\\left(\\left[T\\left(\\left[J_{R}\\left(c,p\\left[q\\right]+w\\left(p\\left[q+1\\right]-p\\left[q\\right]\\right)\\right)\\operatorname{for}w=\\left[0,0.02,...1\\right]\\right]\\right)\\operatorname{for}q=\\left[1...\\operatorname{length}\\left(p\\right)-1\\right]\\right]\\right)"},{"type":"text","id":"151","folderId":"121","text":"random point"},{"type":"expression","id":"152","folderId":"121","color":"#6042a6","latex":"Q=\\left(0.16217570311919294,0.4639462989625718\\right)","hidden":true},{"type":"text","id":"130","folderId":"121","text":"final velocity"},{"type":"expression","id":"80","folderId":"121","color":"#c74440","latex":"J\\left(c,v,p\\right)=J_{S}\\left(c,v,p\\right)-1000\\frac{c-G}{\\operatorname{distance}\\left(c,G\\right)^{4}}+10Q+0.1\\cdot v"},{"type":"text","id":"111","text":"normalise vector"},{"type":"expression","id":"86","color":"#2d70b3","latex":"N\\left(v\\right)=\\frac{v}{\\operatorname{distance}\\left(\\left(0,0\\right),v\\right)}"},{"type":"text","id":"113","text":"dot product of vectors"},{"type":"expression","id":"114","color":"#2d70b3","latex":"D\\left(u,v\\right)=u.x\\cdot v.x+u.y\\cdot v.y"}],"ticker":{"handlerLatex":"S","minStepLatex":"50","playing":true,"open":true}}}