︠18d296f9-0bae-4966-89af-743d27ee8bd2︠ x,y,z = var('x, y, z') Z(x,y) = sqrt(x^2 + y^2 + 1) x1, y1 = [3, 4] x2, y2 = [5, 7] p1 = [x1,y1,Z(x1,y2)] p2 = [x2,y2,Z(x2,y2)] xhat(x,y) = x/(Z(x,y)+1) yhat(x,y) = y/(Z(x,y)+1) q1 = [xhat(x1,y1),yhat(x1,y1)] q2 = [xhat(x2,y2),yhat(x2,y2)] v = vector([x, y, z]) v1 = vector(p1) v2 = vector(p2) n = v1.cross_product(v2) a = n[0] b = n[1] c = n[2] p(x,y) = c*x^2 + c*y^2 + 2*a*x + 2*b*y + c r(x,y) = x^2 + y^2 - 1 ︡9aa26d60-19b8-4547-aab1-ff5180df8dcc︡{"done":true}︡ ︠3bbbf240-5ff2-46e6-a7ef-fb86638e35d4s︠ G = implicit_plot(p == 0, (x,-1,1),(y,-1,1)) G += implicit_plot(r == 0, (x,-1,1),(y,-1,1)) G += points([q1,q2], color = 'red') G.show() ︡86f4133c-0cd1-4d57-871e-46363455d661︡{"file":{"filename":"/home/user/.sage/temp/project-f8581ff1-7e85-4faf-9a05-b65363b3d4c9/348/tmp_Hgc1Zu.svg","show":true,"text":null,"uuid":"ad348f1f-5c36-4926-8cfc-04a6783c256a"},"once":false}︡{"done":true}︡ ︠87a62312-d61b-454d-9aaf-fe73c28e1980s︠ var('z') H = implicit_plot3d(x^2 + y^2 - z^2 == -1, (x,-10,10),(y,-10,10),(z,-1,10), opacity = .5) H += implicit_plot3d(n*v == 0,(x,-10,10),(y,-10,10),(z,-1,10),opacity = .5,color = 'orange' ) H += point3d([p1,p2], color='red') H.show() ︡b06e17d8-780a-4d02-97e1-a7c709b666bd︡{"stdout":"z\n"}︡{"file":{"filename":"f07c80d2-85fc-4d98-bdac-c69f6f5f6c46.sage3d","uuid":"f07c80d2-85fc-4d98-bdac-c69f6f5f6c46"}}︡{"done":true}︡ ︠49a02ece-86a2-4be6-b001-c488dd242476s︠ p ︡a7325329-4f0c-4126-a076-d91fe020313e︡{"stdout":"(x, y) |--> -2*x\n"}︡{"done":true}︡ ︠71172775-b237-4113-aa70-1d1e8d00739e︠ ︡c74a3f69-62b6-44ec-8620-34443086974f︡{"done":true}︡