What you are trying to achieve seems very much related to this :
Analogue of spherical coordinates in n-dimensions
in your case in 2 dimensions then you just use this formula to map the vertices of rectangle you have (lets hope it is subdivided) on your sphere (dont forget to multiply by the halfDiameter somewhere. Only mathematicians are living on a unit sphere all other decent people are using diameters...)
EDIT : As all this is a bit vague i give some more insights What you need from this formula to be used :
x = r*sinθ*cosφ y = r*sinθ*sinφ z = r*cosθ
θ and φ being the spherical coordinates you are looking for (Latitude and Longitude) to get it you take the x/y coordinates of the points on portion of the panoramic image as such :
public Void getPointPosOnSphere(float Longitude,float Latitude,float r) { x = r*Mathf.sin(Longitude)*Mathf.cos(Latitude); y = r*Mathf.sin(Longitude)*Mathf.sin(Latitude); z = r*Mathf.cos(Longitude); return new Vector3(x,y,z); } //here you could have a for loop iterating through points of your rectangle for each //point you'd have associated a map coordinate : Vector3 pointSpacePos = getPointPosOnSphere(pointCoordY,pointCoordX,HalfDiamater); //End of the for loop
then you would get your quad mapped on a sphere based from his xy position on a 2D coordinate system translated to the 3D position on the space according to sphere mapping.
EDIT : Just got an idea, to go further you could encapsulate the coordinates of the plane on the sphere using UV values as such :
for(int i = 0;i < vertices.Length; i++) { vertices[i] = getPointPosOnSphere(UV[i].y,UV[i].x,HalfDiamater); }
There you could manage the quad position on your favorite 3D software (or even by code through unity) just by assigning UV values (if from 0 to 1 on both axes then quad will be wrapped all around the sphere)
WARNING : Using UV's will require you to do a Radians to Degrees conversion. (as UV is 0 to 1)