{"version":9,"randomSeed":"e0da369e37b62a7463e2b052627c1cca","graph":{"viewport":{"xmin":-1.25,"ymin":-1.25,"xmax":1.25,"ymax":1.25}},"expressions":{"list":[{"type":"text","id":"18","text":"convert projective coordinates to sphere-surface point"},{"type":"expression","id":"19","color":"#388c46","latex":"R_{P}\\left(p\\right)=\\left[\\frac{2p.x}{p.x^{2}+p.y^{2}+1},\\frac{p.x^{2}+p.y^{2}-1}{p.x^{2}+p.y^{2}+1},\\frac{2p.y}{p.x^{2}+p.y^{2}+1}\\right]"},{"type":"text","id":"21","text":"convert sphere-surface point to projective coordinates"},{"type":"expression","id":"22","color":"#000000","latex":"P_{R}\\left(r\\right)=\\left(\\frac{r\\left[1\\right]}{1-r\\left[2\\right]},\\frac{r\\left[3\\right]}{1-r\\left[2\\right]}\\right)"},{"type":"text","id":"58","text":"project, R^3 -> R^2"},{"type":"expression","id":"23","color":"#c74440","latex":"P\\left(v\\right)=\\frac{\\left(v\\left[1\\right],v\\left[2\\right]\\right)}{v\\left[3\\right]}"},{"type":"folder","id":"127","title":"parameters","collapsed":true},{"type":"text","id":"61","folderId":"127","text":"centre of sphere, relative to camera"},{"type":"expression","id":"62","folderId":"127","color":"#388c46","latex":"O=\\left[0,0,2\\right]"},{"type":"text","id":"67","folderId":"127","text":"half of the number of lines around each dimension of the sphere surface"},{"type":"expression","id":"68","folderId":"127","color":"#2d70b3","latex":"K=6","slider":{"hardMin":true,"hardMax":true,"min":"1","max":"100","step":"1"}},{"type":"text","id":"64","folderId":"127","text":"bound on projective computations"},{"type":"expression","id":"65","folderId":"127","color":"#000000","latex":"B=99","labelSize":"medium","slider":{"hardMin":true,"hardMax":true,"min":"0","max":"1000"}},{"type":"text","id":"91","folderId":"127","text":"configured transformation"},{"type":"expression","id":"92","folderId":"127","color":"#2d70b3","latex":"T\\left(p\\right)=R_{x}\\left(R_{y}\\left(p,A.x\\right),A.y\\right)"},{"type":"expression","id":"93","folderId":"127","color":"#388c46","latex":"A=\\left(0.59,-0.535\\right)","labelSize":"medium"},{"type":"folder","id":"75","title":"basic functions of complex numbers","collapsed":true},{"type":"text","id":"76","folderId":"75","text":"multiply"},{"type":"expression","id":"77","folderId":"75","color":"#c74440","latex":"M_{c}\\left(w,z\\right)=\\left(w.x\\cdot z.x-w.y\\cdot z.y,w.x\\cdot z.y+w.y\\cdot z.x\\right)"},{"type":"text","id":"78","folderId":"75","text":"reciprocate"},{"type":"expression","id":"79","folderId":"75","color":"#388c46","latex":"R_{c}\\left(z\\right)=\\frac{\\left(z.x,-z.y\\right)}{z.x^{2}+z.y^{2}}"},{"type":"text","id":"80","folderId":"75","text":"square"},{"type":"expression","id":"81","folderId":"75","color":"#2d70b3","latex":"Q_{c}\\left(z\\right)=M_{c}\\left(z,z\\right)"},{"type":"text","id":"82","folderId":"75","text":"cube"},{"type":"expression","id":"83","folderId":"75","color":"#000000","latex":"C_{c}\\left(z\\right)=M_{c}\\left(Q_{c}\\left(z\\right),z\\right)"},{"type":"text","id":"84","folderId":"75","text":"naturally exponentiate"},{"type":"expression","id":"85","folderId":"75","color":"#c74440","latex":"E_{c}\\left(z\\right)=\\left(e^{z.x}\\cos\\left(z.y\\right),e^{z.x}\\sin\\left(z.y\\right)\\right)"},{"type":"text","id":"86","folderId":"75","text":"naturally logarithmise"},{"type":"expression","id":"87","folderId":"75","color":"#2d70b3","latex":"L_{c}\\left(z\\right)=\\left(\\ln\\left(\\operatorname{distance}\\left(\\left(0,0\\right),z\\right)\\right),\\arctan\\left(z.y,z.x\\right)\\right)"},{"type":"text","id":"88","folderId":"75","text":"power (complex to real)"},{"type":"expression","id":"89","folderId":"75","color":"#2d70b3","latex":"P_{c}\\left(z,x\\right)=\\left(\\operatorname{distance}\\left(\\left(0,0\\right),z\\right)^{x}\\cos\\left(x\\arctan\\left(z.y,z.x\\right)\\right),\\operatorname{distance}\\left(\\left(0,0\\right),z\\right)^{x}\\sin\\left(x\\arctan\\left(z.y,z.x\\right)\\right)\\right)"},{"type":"folder","id":"125","title":"rotation functions (around axes)","collapsed":true},{"type":"expression","id":"111","folderId":"125","color":"#6042a6","latex":"S\\left(p\\right)=\\left(p.y,-p.x\\right)"},{"type":"expression","id":"110","folderId":"125","color":"#388c46","latex":"R_{x}\\left(p,\\alpha\\right)=S\\left(M_{c}\\left(\\left(-p.y,p.x\\right)+\\left(\\alpha,0\\right),R_{c}\\left(\\left(1,0\\right)-\\alpha\\cdot\\left(-p.y,p.x\\right)\\right)\\right)\\right)"},{"type":"expression","id":"108","folderId":"125","color":"#c74440","latex":"R_{y}\\left(p,\\alpha\\right)=M_{c}\\left(p,\\left(\\frac{2\\alpha}{\\alpha^{2}+1},\\frac{\\alpha^{2}-1}{\\alpha^{2}+1}\\right)\\right)"},{"type":"expression","id":"73","folderId":"125","color":"#c74440","latex":"R_{z}\\left(p,\\alpha\\right)=M_{c}\\left(p+\\left(\\alpha,0\\right),R_{c}\\left(\\left(1,0\\right)-\\alpha p\\right)\\right)"},{"type":"folder","id":"119","title":"sphere","collapsed":true},{"type":"expression","id":"59","folderId":"119","color":"#c74440","latex":"\\left[P\\left(O+R_{P}\\left(T\\left(\\left(\\frac{2p_{1}}{p_{1}^{2}+1}t,\\frac{p_{1}^{2}-1}{p_{1}^{2}+1}t\\right)\\right)\\right)\\right)\\operatorname{for}p_{1}=\\left[-1,-1+\\frac{1}{K},...1\\right]\\right]","parametricDomain":{"min":"-B","max":"B"},"domain":{"min":"-B","max":"B"}},{"type":"expression","id":"69","folderId":"119","color":"#fa7e19","latex":"\\left[P\\left(O+R_{P}\\left(T\\left(\\left(\\frac{t^{2}-1}{t^{2}+1}p_{1},\\frac{2t}{t^{2}+1}p_{1}\\right)\\right)\\right)\\right)\\operatorname{for}p_{1}=\\left[\\frac{\\sqrt{1-j^{2}}}{j-1}\\operatorname{for}j=\\left[-1,-1+\\frac{1}{K},...1\\right]\\right]\\right]","parametricDomain":{"min":"-B","max":"B"},"domain":{"min":"-B","max":"B"}},{"type":"folder","id":"123","title":"transformed angles","hidden":true,"collapsed":true},{"type":"expression","id":"114","folderId":"123","color":"#c74440","latex":"\\left[T\\left(\\left(p_{1},t\\right)\\right)\\operatorname{for}p_{1}=\\left[-1,-1+\\frac{1}{K},...1\\right]\\right]","parametricDomain":{"min":"-B","max":"B"},"domain":{"min":"-B","max":"B"}},{"type":"expression","id":"115","folderId":"123","color":"#fa7e19","latex":"\\left[T\\left(\\left(t,p_{1}\\right)\\right)\\operatorname{for}p_{1}=\\left[-1,-1+\\frac{1}{K},...1\\right]\\right]","parametricDomain":{"min":"-B","max":"B"},"domain":{"min":"-B","max":"B"}}]}}