{"version":9,"randomSeed":"2d79c7e7eeab2fa4a182fce23d3c0968","graph":{"viewport":{"xmin":-1.25,"ymin":-1.5493184770493256,"xmax":1.25,"ymax":1.549318477049322}},"expressions":{"list":[{"type":"folder","id":"37","title":"library of useful functions","collapsed":true},{"type":"text","id":"38","folderId":"37","text":"project, R^3 -> R^2"},{"type":"expression","id":"39","folderId":"37","color":"#2d70b3","latex":"P\\left(v\\right)=\\frac{\\left(v\\left[1\\right],v\\left[2\\right]\\right)}{v\\left[3\\right]}"},{"type":"text","id":"40","folderId":"37","text":"project list, R^(3*n) -> R^3 -> R^2 -> (R^2)^n"},{"type":"expression","id":"41","folderId":"37","color":"#2d70b3","latex":"P_{L}\\left(v,o,\\phi\\right)=\\left[P\\left(R_{x}\\left(R_{y}\\left(o+\\left[v\\left[3k-2\\right],v\\left[3k-1\\right],v\\left[3k\\right]\\right],\\phi.x\\right),\\phi.y\\right)\\right)\\operatorname{for}k=\\left[1...\\frac{\\operatorname{length}\\left(v\\right)}{3}\\right]\\right]"},{"type":"text","id":"42","folderId":"37","text":"dot product, R^n -> R^n -> R"},{"type":"expression","id":"43","folderId":"37","color":"#c74440","latex":"D\\left(u,v\\right)=\\sum_{k=1}^{\\min\\left(\\operatorname{length}\\left(u\\right),\\operatorname{length}\\left(v\\right)\\right)}u\\left[k\\right]v\\left[k\\right]"},{"type":"text","id":"44","folderId":"37","text":"cross product, R^3 -> R^3"},{"type":"expression","id":"45","folderId":"37","color":"#388c46","latex":"C\\left(u,v\\right)=\\left[u\\left[2\\right]v\\left[3\\right]-u\\left[3\\right]v\\left[2\\right],u\\left[3\\right]v\\left[1\\right]-u\\left[1\\right]v\\left[3\\right],u\\left[1\\right]v\\left[2\\right]-u\\left[2\\right]v\\left[1\\right]\\right]"},{"type":"text","id":"46","folderId":"37","text":"normalise vector, R^n -> R^n"},{"type":"expression","id":"47","folderId":"37","color":"#6042a6","latex":"N\\left(v\\right)=\\frac{v}{\\sqrt{D\\left(v,v\\right)}}"},{"type":"text","id":"48","folderId":"37","text":"insert element as replacement, R^n -> N -> {R, R^2} -> R^n"},{"type":"expression","id":"49","folderId":"37","color":"#2d70b3","latex":"I\\left(L,i,x\\right)=\\left\\{i=1:\\operatorname{join}\\left(x,L\\left[2...\\right]\\right),i=\\operatorname{length}\\left(L\\right):\\operatorname{join}\\left(L\\left[1...\\operatorname{length}\\left(L\\right)-1\\right],x\\right),\\operatorname{join}\\left(L\\left[1...i-1\\right],x,L\\left[i+1...\\right]\\right)\\right\\}"},{"type":"text","id":"50","folderId":"37","text":"rotate around each axis, R^3 -> R^3"},{"type":"expression","id":"51","folderId":"37","color":"#2d70b3","latex":"R_{x}\\left(v,\\theta\\right)=\\left[v\\left[1\\right],v\\left[2\\right]\\cos\\theta-v\\left[3\\right]\\sin\\theta,v\\left[2\\right]\\sin\\theta+v\\left[3\\right]\\cos\\theta\\right]"},{"type":"expression","id":"52","folderId":"37","color":"#388c46","latex":"R_{y}\\left(v,\\theta\\right)=\\left[v\\left[1\\right]\\cos\\theta-v\\left[3\\right]\\sin\\theta,v\\left[2\\right],v\\left[1\\right]\\sin\\theta+v\\left[3\\right]\\cos\\theta\\right]"},{"type":"expression","id":"53","folderId":"37","color":"#6042a6","latex":"R_{z}\\left(v,\\theta\\right)=\\left[v\\left[1\\right]\\cos\\theta-v\\left[2\\right]\\sin\\theta,v\\left[1\\right]\\sin\\theta+v\\left[2\\right]\\cos\\theta,v\\left[3\\right]\\right]"},{"type":"text","id":"55","text":"convert projective coordinates to sphere-surface point"},{"type":"expression","id":"57","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":"71","text":"convert sphere-surface point to projective coordinates"},{"type":"expression","id":"72","color":"#2d70b3","latex":"P_{R}\\left(r\\right)=\\left(-\\frac{r\\left[1\\right]}{r\\left[2\\right]-1},-\\frac{r\\left[3\\right]}{r\\left[2\\right]-1}\\right)"},{"type":"text","id":"78","text":"centre of sphere (relative to camera)"},{"type":"expression","id":"63","color":"#6042a6","latex":"O=\\left[0,0,3\\right]"},{"type":"text","id":"76","text":"points on an (unrotated) sphere"},{"type":"expression","id":"58","color":"#6042a6","latex":"\\left[P\\left(O+R_{P}\\left(\\left(0,0\\right)+\\left(x_{1},y_{1}\\right)\\right)\\right)\\operatorname{for}x_{1}=\\left[-10,-9,...10\\right],y_{1}=\\left[-10,-9,...10\\right]\\right]","hidden":true,"labelSize":"medium"},{"type":"expression","id":"61","color":"#2d70b3","latex":"\\left[P\\left(O+R_{P}\\left(\\left(0,0\\right)+\\left(\\frac{1}{x_{1}},\\frac{1}{y_{1}}\\right)\\right)\\right)\\operatorname{for}x_{1}=\\left[-6,-5,...5\\right],y_{1}=\\left[-6,-5,...5\\right]\\right]","hidden":true},{"type":"text","id":"80","text":"rotational control point projected onto sphere"},{"type":"expression","id":"64","color":"#388c46","latex":"P\\left(O+R_{P}\\left(q\\right)\\right)"},{"type":"text","id":"82","text":"segment from top of sphere to rotational control point (on horizontal plane)"},{"type":"expression","id":"62","color":"#388c46","latex":"\\operatorname{polygon}\\left(P\\left(O+\\left[0,1,0\\right]\\right),P\\left(O+\\left[q.x,0,q.y\\right]\\right)\\right)","hidden":true,"labelSize":"medium"},{"type":"folder","id":"113","title":"projective spherical angle sum"},{"type":"expression","id":"97","folderId":"113","color":"#c74440","latex":"S_{pd}\\left(u,v\\right)=\\operatorname{distance}\\left(\\left(0,0\\right),u\\right)\\operatorname{distance}\\left(\\left(0,0\\right),v\\right)"},{"type":"expression","id":"98","folderId":"113","color":"#2d70b3","latex":"S_{dp}\\left(u,v\\right)=u.x\\cdot v.x+u.y\\cdot v.y"},{"type":"expression","id":"102","folderId":"113","color":"#000000","latex":"S_{cp}\\left(u,v\\right)=\\left(u.x\\cdot v.x-u.y\\cdot v.y,u.x\\cdot v.y+u.y\\cdot v.x\\right)"},{"type":"expression","id":"103","folderId":"113","color":"#c74440","latex":"S_{cd}\\left(u,v\\right)=\\frac{\\left(u.x\\cdot v.x+u.y\\cdot v.y,u.y\\cdot v.x-u.x\\cdot v.y\\right)}{v.x^{2}+v.y^{2}}"},{"type":"expression","id":"107","folderId":"113","color":"#000000","latex":"S_{sp}\\left(u,v\\right)=\\left(u.x\\cdot v.x+u.y\\cdot v.y,u.x\\cdot v.y+u.y\\cdot v.x\\right)"},{"type":"expression","id":"108","folderId":"113","color":"#c74440","latex":"S_{sd}\\left(u,v\\right)=\\frac{u}{\\operatorname{distance}\\left(\\left(0,0\\right),v\\right)}"},{"type":"expression","id":"69","folderId":"113","color":"#6042a6","latex":"S\\left(u,v\\right)=S_{cd}\\left(u+v,\\left(1,0\\right)-S_{sp}\\left(u,v\\right)\\right)"},{"type":"text","id":"134","folderId":"113","text":"(u + v) / (1 - u * v) (complex) works for v = (x, 0)"},{"type":"text","id":"115","folderId":"113","text":"i believe the sum formula is something of the form (u + v) / (1 - u*v), as an extension of the 1d/2d case, but that introduces the problems:"},{"type":"text","id":"117","folderId":"113","text":"- what is u*v? how do we define the product of two R^2s?"},{"type":"text","id":"121","folderId":"113","text":"- if u*v is R^2, how do we define the 1 from which it is subtracted?"},{"type":"text","id":"124","folderId":"113","text":"- if u*v is R^2, how do we define the R^2/R^2 division necessary in the overall formula?"},{"type":"text","id":"126","folderId":"113","text":"some differential calculus on the 1d/2d case gives these insights:"},{"type":"text","id":"128","folderId":"113","text":"- u*v should be defined s.t. Λ[u→0] u*v = 0 and Λ[v→0] u*v = 0"},{"type":"text","id":"130","folderId":"113","text":"- 1 in the denominator should be a multiplicative/divisive identity for however such operations are defined here (this is kinda just like a duh math fact)"},{"type":"text","id":"132","folderId":"113","text":"- multiplication should be distributive"},{"type":"text","id":"86","text":"half of the number of lines around each dimension of the sphere surface"},{"type":"expression","id":"73","color":"#c74440","latex":"K=6","slider":{"hardMin":true,"hardMax":true,"min":"1","max":"100","step":"1"}},{"type":"text","id":"88","text":"bound magnitude of projective computation"},{"type":"expression","id":"74","color":"#2d70b3","latex":"B=99"},{"type":"text","id":"90","text":"rotated sphere lines"},{"type":"expression","id":"65","color":"#c74440","latex":"\\left[P\\left(O+R_{P}\\left(S\\left(q,\\left(t\\cdot\\frac{2k}{k^{2}+1},t\\cdot\\left(1-\\frac{2}{k^{2}+1}\\right)\\right)\\right)\\right)\\right)\\operatorname{for}k=\\left[-1,-1+\\frac{1}{K},...1\\right]+\\frac{0}{3K}\\right]","parametricDomain":{"min":"-B","max":"B"},"domain":{"min":"-B","max":"B"}},{"type":"expression","id":"68","color":"#c74440","latex":"\\left[P\\left(O+R_{P}\\left(S\\left(q,\\left(k\\cdot\\left(1-\\frac{2}{t^{2}+1}\\right),k\\cdot\\frac{2t}{t^{2}+1}\\right)\\right)\\right)\\right)\\operatorname{for}k=\\left[\\frac{\\sqrt{1-j^{2}}}{j-1}\\operatorname{for}j=\\left[-1,-1+\\frac{1}{K},...1-\\frac{1}{K}\\right]+\\frac{0}{3K}\\right]\\right]","parametricDomain":{"min":"-B","max":"B"},"domain":{"min":"-B","max":"B"}},{"type":"text","id":"92","text":"control point (draggable)"},{"type":"expression","id":"104","color":"#2d70b3","latex":"q_{x}=0","slider":{"hardMin":true,"hardMax":true,"min":"-3","max":"3","step":"0.1"}},{"type":"expression","id":"105","color":"#388c46","latex":"q_{y}=0","slider":{"hardMin":true,"hardMax":true,"min":"-3","max":"3","step":"0.1"}},{"type":"expression","id":"59","color":"#000000","latex":"q=\\left(q_{x},q_{y}\\right)"},{"type":"expression","id":"60","color":"#6042a6","latex":"S\\left(\\left(1,0\\right),q\\right)","labelSize":"medium","pointOpacity":"1","pointSize":"20"},{"type":"text","id":"100","text":"transformed planar coordinates"},{"type":"expression","id":"101","color":"#6042a6","latex":"\\left[S\\left(\\left(j,k\\right),q\\right)\\operatorname{for}j=\\left[-3,-2.5,...3\\right],k=\\left[-3,-2.5...3\\right]\\right]"}]}}