Re: [math-fun] Spherical trig question
wfl>On 2/7/11, Bill Gosper <billgosper@gmail.com <http://gosper.org/webmail/src/compose.php?send_to=billgosper%40gmail.com>> wrote: rwg> Ah, from 3.5 yrs ago,
-------------
From gosper@alum.mit.edu <http://gosper.org/webmail/src/compose.php?send_to=gosper%40alum.mit.edu> Mon Jul 16 08:47:39 2007 Date: Mon, 16 Jul 2007 10:39:48 -0400 (EDT) Message-ID: <23173122.9411184596788302.JavaMail.gbourne@brunch.mit.edu <http://gosper.org/webmail/src/compose.php?send_to=23173122.9411184596788302.JavaMail.gbourne%40brunch.mit.edu>> From: Bill Gosper <gosper@alum.mit.edu <http://gosper.org/webmail/src/compose.php?send_to=gosper%40alum.mit.edu>> To: math-fun@mailman.xmission.com <http://gosper.org/webmail/src/compose.php?send_to=math-fun%40mailman.xmission.com> Lemma: The apical solid angle of an isosceles trapezoidal pyramid with vertex angles a,b,a,c is
2 c b c 2 b - sin (-) + (cos(a) - 1) sin(-) sin(-) - sin (-) + cos(a) + 1 2 2 2 2 (d79) 2 acos(-------------------------------------------------------------) b c (cos(a) + 1) cos(-) cos(-) 2 2 I derived this by splitting the general a,b,a,c hedral vertex into trihedrals a,b,d and d,a,c, then maximizing over d, getting b c (d38) cos(d) = cos(a) - 2 sin(-) sin(-) 2 2 Clearer might have been the difference between two isosceles trihedrals: solid_angle(d,d,b)-solid_angle(d-a,d-a,c) with d chosen to equalize the dihedrals, using dihedral(a,b,c):=acos(csc(a)*csc(b)*cos(c)-cot(a)*cot(b)), which gives sin(a) d = atan(----------------------), b c cos(a) - csc(-) sin(-) 2 2 and eventually the same solid angle formula. But the max technique generalizes from trapezoidal pyramids to arbitrary quadrilateral pyramids with apex angles a,b,c,d, whose maximal solid angle is cos(d) + cos(c) + cos(b) + cos(a) a b c d --------------------------------- - tan(-) tan(-) tan(-) tan(-) a b c d 2 2 2 2 4 cos(-) cos(-) cos(-) cos(-) 2 2 2 2 Note we get the old formula when d=0. Note also the symmetry, giving the same result for a,b,d,c. In this maximal case, the "diagonal angles", i.e. the apex angles exposed by splitting into two triangular pyramids, are a d b c b d a c 2 (sin(-) sin(-) + sin(-) sin(-)) (sin(-) sin(-) + sin(-) sin(-)) 2 2 2 2 2 2 2 2 acos(1 - -----------------------------------------------------------------) c d a b sin(-) sin(-) + sin(-) sin(-) 2 2 2 2 and same(a<->c). ------------ WFL>If there is a connection with the original thread, I'm afraid it has escaped me. Then I'm confused--I thought this was exactly what David requested. For the unit sphere, solid angle := area. If you place the apex of a pyramid at the center, the vertex angles will equal the great arcs on the surface. The base of an isosceles trapezoidal pyramid will project onto David's trapezoidal area. Is it clear that the area of a hinged quadrilateral abac is maximal when flexed into the isosceles configuration? Is this all wrong? Irrelevant? DW>When I worked at ComputerVision, I implemented an algorithm for polygonal area. For each edge of the polygon, I computed the area of the quadrilateral between the edge and its shadow on the x-axis via orthogonal projection. The edges were directed counterclockwise around the polygon, allowing computation of directed normals, the areas were added or subtracted according to whether the normal pointed toward or away from the x-axis. Adding up all these areas gave the area of the polygon. (rwg)>I sent this to the kids a few months ago. Probably shoulda cc'ed math-fun: -------------- Subj: That Im[z w*] trick is really handy. Here's the area of an arbitrary polygon: In[100]:=area[L_List]:=Total[MapThread[Im[#1\[Conjugate]*#2]&,{L,RotateLeft[L]}]]/2 E.g., the b x h triangle in general position: In[104]:= FullSimplify[ ComplexExpand[area[z+E^(I*t)*{0,b,h*I+x}]],{b,h,x,t}\[Element]Reals] Out[104]= (b h)/2 In[99]:= Area[Pentagon] Out[99]= 5/(4 Sqrt[5 - 2 Sqrt[5]]) In[106]:= area[Table[Exp[2*k*I*\[Pi]/5]/2/Sin[\[Pi]/5], {k, 5}]] Out[106]= (5 Sqrt[5/8 + Sqrt[5]/8])/(8 (5/8 - Sqrt[5]/8)) In[107]:= FullSimplify[% - %99] Out[107]= 0 -------------- --rwg
On 2/10/11, Bill Gosper <billgosper@gmail.com> wrote:
wfl>On 2/7/11, Bill Gosper <billgosper@gmail.com wrote: ... WFL>If there is a connection with the original thread, I'm afraid it has escaped me.
Then I'm confused--I thought this was exactly what David requested. For the unit sphere, solid angle := area. If you place the apex of a pyramid at the center, the vertex angles will equal the great arcs on the surface. The base of an isosceles trapezoidal pyramid will project onto David's trapezoidal area. Is it clear that the area of a hinged quadrilateral abac is maximal when flexed into the isosceles configuration?
Is this all wrong? Irrelevant?
Apologies --- I did eventually understand the connection! My interpretation of the DW problem assumed that the fourth side was not already known, but required also to be computed --- leaving WFL and RWG initially at cross-purposes.
DW>When I worked at ComputerVision, I implemented an algorithm for polygonal area. For each edge of the polygon, I computed the area of the quadrilateral between the edge and its shadow on the x-axis via orthogonal projection. The edges were directed counterclockwise around the polygon, allowing computation of directed normals, the areas were added or subtracted according to whether the normal pointed toward or away from the x-axis. Adding up all these areas gave the area of the polygon.
Area of a triangle with given vertices (normalised homogeneous coordinates) P,Q,R is very elegant in DCQ geometric algebra: area (P,Q,R) = (1/2) sqrt( ||<P◦Q◦R>_1|| ) where X◦Y denotes dual Clifford product, <X>_1 vector part, ||X|| magnitude. Splitting a cyclically-ordered convex polygon into triangles is straightforward; but trickier situations arise otherwise, particularly when it has self-intersections. I've uploaded an intro to geometric algebra DCQ_teabag.pdf to GoogleDocs at https://docs.google.com/leaf?id=0B6QR93hqu1AhZGY1NGYzNTktMzAzOC00ZDRlLWEzMzM... Any feedback would be welcome!
(rwg)>I sent this to the kids a few months ago. Probably shoulda cc'ed math-fun: -------------- Subj: That Im[z w*] trick is really handy. Here's the area of an arbitrary polygon: In[100]:=area[L_List]:=Total[MapThread[Im[#1\[Conjugate]*#2]&,{L,RotateLeft[L]}]]/2
E.g., the b x h triangle in general position: In[104]:= FullSimplify[ ComplexExpand[area[z+E^(I*t)*{0,b,h*I+x}]],{b,h,x,t}\[Element]Reals]
Out[104]= (b h)/2
In[99]:= Area[Pentagon]
Out[99]= 5/(4 Sqrt[5 - 2 Sqrt[5]])
In[106]:= area[Table[Exp[2*k*I*\[Pi]/5]/2/Sin[\[Pi]/5], {k, 5}]]
Out[106]= (5 Sqrt[5/8 + Sqrt[5]/8])/(8 (5/8 - Sqrt[5]/8))
In[107]:= FullSimplify[% - %99]
Out[107]= 0 --------------
--rwg
This looks remarkably economical, but too cryptic for me to work out exactly what's going. You seem to be working in complex cartesian 3-space coordinates --- are there any references available for your "Im[z w*] trick" ? WFL
DW>Fred Lunnon's analysis uncovered a simpler approach, to wit, project the edges not to the equator, but to the north pole. Instead of adding up quadrilateral areas below the edges, I could add up triangular areas above the edges. The sides of the triangle impinging on the pole are easy to obtain (complements of the vertex latitudes) as is angle between them (difference of the vertex longitudes). From there, standard spherical trigonometry should allow me to derive the remaining side (the original edge, via law of cosines), angles (via law of sines), and area (law of excess), the prize being the area in terms of edge vertex lat-longs. The sign of the area is determined by local order of the vertex latitudes. The trig, however, is too daunting for me, which is why I posted to brighter lights than myself. I was hoping that some of the computational ugliness might implode leaving a relatively tractable expression. (rwg)>Then can't we do the whole thing with just the law of excess, and the general formula for the intersection angle of two arcs, given the (lat,long)s of their endpoints? How bad can that be? --rwg
participants (2)
-
Bill Gosper -
Fred lunnon