{"version":8,"graph":{"viewport":{"xmin":-0.509114895183122,"ymin":-0.35540161917665386,"xmax":0.5163292227613742,"ymax":0.35515280229491913}},"randomSeed":"9dc581cc648b85dc9273d4ab0abbd79b","expressions":{"list":[{"type":"text","id":"26","text":"There are a lot of small optimisations here enabling more precise shading without \"definitions are nested too deeply\"."},{"type":"text","id":"28","text":"These optimisations (most of them, at least) result in reduced flexibility."},{"type":"text","id":"30","text":"This graph is not intended to teach how to raycast properly; it is intended to be an aggressively-optimised visually-acceptable demonstration."},{"type":"expression","id":"1","color":"#c74440","latex":"a=\\frac{\\left[x,y,1\\right]}{\\sqrt{x^{2}+y^{2}+1}}"},{"type":"expression","id":"11","color":"#c74440","latex":"d_{as}=3a\\left[3\\right]"},{"type":"expression","id":"12","color":"#2d70b3","latex":"p_{n}=\\left[x,y,1\\right]\\left(3a\\left[3\\right]-\\sqrt{9a\\left[3\\right]^{2}-8}\\right)-\\left[0,0,3\\right]"},{"type":"expression","id":"6","color":"#c74440","latex":"i_{m}=\\sqrt{p_{n}\\left[1\\right]^{2}+p_{n}\\left[2\\right]^{2}+p_{n}\\left[3\\right]^{2}}"},{"type":"expression","id":"8","color":"#388c46","latex":"l=\\frac{p_{n}\\left[1\\right]\\sqrt{3}}{3i_{m}}+\\frac{p_{n}\\left[2\\right]\\sqrt{3}}{3i_{m}}-\\frac{p_{n}\\left[3\\right]\\sqrt{3}}{3i_{m}}"},{"type":"text","id":"33","text":"The smaller that arbitrary number after 0, the better. Unfortunately, there are limits to how low it can go before erroring with \"definitions are nested too deeply\"."},{"type":"expression","id":"9","color":"#6042a6","latex":"0<1\\left\\{l\\le\\left[0,0.052,...1\\right]\\right\\}","lines":true,"colorLatex":"c","fillOpacity":"0.08"},{"type":"expression","id":"13","color":"#6042a6","latex":"x^{2}+y^{2}\\le\\frac{1}{8}","hidden":true,"colorLatex":"c"}]}}