OVERVIEW BRIEF ABSTRACT We ask readers to place their eye on one mountain and (1) describe what they can see, (2) how much surface area they can see, and (3) nearest point - all relative to a nearby mountain. GENERAL INFORMATION FileName: OVERVIEW Full title: What we can see on one hill from a nearby hill. Developer: Brian J. Winkel, Department of Mathematics, Rose-Hulman Institute of Technology, Terre Haute IN 47803 USA. Contact: Brian J. Winkel, Department of Mathematics, Rose-Hulman Institute of Technology, Terre Haute IN 47803 USA. Phone: 812-877-8412. Email: winkel@rose-hulman.edu. FAX: 812-877-3198. Support: The production of this material is supported by the National Science Foundation under Division of Undergraduate Education grant DUE-9352849: Development Site for Complex, Technology-Based Problems in Calculus with Applications in Science and Engineering and the Arvin Foundation of Columbus IN. STATEMENT OF PROBLEM For the function f(x, y) = (x^3 - 3x + 4)/(x^4 + 5y^4 + 20), suppose your eye is precisely on the surface z = f(x, y) at the point (2.8, 0.5, f(2.8,0.5)). You look to the west, i.e. in the vector direction (roughly) (0,-1, 0). You see a mountain before you. We render a picture of the surface and the point at which our eye rests. These cells contain the code to generate the above picture. f[x_, y_] := (x^3 - 3x + 4 )/(x^4 + 5y^4 + 20); pt = Show[Graphics3D[{PointSize[.02], Point[{2.8,.5,f[2.8,.5]}]}]] p1 = Plot3D[f[x,y],{y,-5,5},{x,-5,5},PlotPoints->30, AxesLabel->{"x","y","z"}, PlotRange->{{-5,5},{-5,5},{-.2,.3}}]; Show[p1,pt,ViewPoint->{1.300, -1.300, 0.787}] a) Determine the point on the mountain which you can see which is nearest to you. b) Describe the points on the mountain which you can see from the point (2.8, 0.5, f(2.8,0.5)) as best you can. c) Determine the amount of surface area on the mountain which you can see from the point (2.8, .5, f[2.8,.5]). KEYWORDS Visualization, function of two variables, tangent plane, gradient, numerical solutions, implicit function, surface area, optimization. TEACHER NOTES ISSUES RELATED TO THE PROBLEM Specifically we introduce the problem in class. We usually begin the problem in a room in which there are no computers so the students will do a bit of visualization of their own without turning to computers to "crunch" functions and numbers. We give the students the statement of the problem with the figure and say, "Go to it!" Since they are always working in groups they turn to their neighbor and start buzzing. As a teacher we circulate around the class, listening in on group discussion, responding to individual queries, responding to students' ideas - some taken seriously, some offered lightly, making suggestions, and, from time to time, summarizing group progress for the class and pushing groups to make progress reports during class time. Prerequisites Students should know about three dimensional concepts such as function of two variable, distance function, tangent plane, gradient vector, implicit plotting, numerical solution of intersections of surfaces in three space, surface area integration, and optimization for a function of two variables. Some students made extensive use of Mathematica programming. At times we have assigned this problem and students did not have all of the attendant concepts, but in the two week period over which this problem was assigned, we covered the needed topics OR the student found out about them and used them. Time allotment - time management We spend three days of class time, usually over a two week period on this problem (one year we spent four consecutive class periods on the problem) and we require students to submit individual write-ups some two and one half weeks after the problem has been introduced in class. While students work in small groups both in and out of class each student is responsible to write up an individual report. At the one and one-half week mark we require individuals to submit a one page progress report indicating who they are working with, what ideas are emerging, and what progress towards a resolution they are making. When we first assigned this problem several years ago we did not assign part (c), nor did we really have an idea on how to accomplish a good solution to (a) or (b). We told the student this and some were quite concerned that we would assign a problem to which we did not know the answer. "Life is like that in the real world," we say, i.e. your boss will not know the answer to a question she asks you, but she will have some idea as to whether or not it is a reasonable question and if you can contribute to its resolution. Moreover, she will be there to assist you, advise you, respond to your ideas, and to offer tools, equipment, and other resources should you need them. "Welcome to the real world!" Not only did we not have a solid approach to the problem before going to the students with it, but we did not have the many rich ideas and varied approaches which have emerged from students' approaches over the several times we have assigned this effort! We believe these approaches illustrate the breadth of student initiative and creativity and we share them with the reader in the hopes that the reader will try this problem or something like it. Some samples from progress reports indicate the directness of students in sharing their feelings and observations: "Initially in the class I had no idea of how to go about solving this problem. The problem seemed beyond my knowledge. With a little discussion among my friends in the class and help outside of class I now believe that I actually may be able to understand what is going on and solve the problems." "When I first saw the project it looked nearly impossible. That view changed rapidly as I began to chat with my colleagues. The ideas began to flow and the problem quickly became manageable." "I have no huge progress to report on this subject, but I do have several ideas." "The first idea that we came up with is the idea that is we could make the second hillside, the one we see, a line in two space, a line perpendicular to that line running through our position point, would be the shortest distance. The problem with this is that one, we are in three space not two, and two the perpendicular line through the hill and our point may not be actually visible to us. Even though this idea was not usable it lead to other good ideas." "When this problem was first assigned, I approached it with some trepidation. It is scary when you are faced with a problem that even your professor has never solved. After talking with fellow students, I have seen that this problem will not be as evil as it first seemed." The best title on the final report was, "Making Molehills Out of Mountains." The best observation by a student was, "These failed ideas often lead to better ideas in the long run and were usually not wasted time." Expectations Future payoffs Extensions References and Sources POSSIBLE SOLUTION(S) Student Solution by Todd McCorkle, Class of 1997, Rose-Hulman Institute of Technology, done in the spring of his Integrated First-Year Curriculum in Science, Engineering, and Mathematics course. Preliminaries: Surface function, gradient, and distance function defined f[x_, y_] := (x^3 - 3x + 4 )/(x^4 + 5y^4 + 20) gradf[x_,y_] = {D[f[x,y],x], D[f[x,y],y]}; dist[pt1_,pt2_]:=Sqrt[(pt2[[1]]-pt1[[1]])^2 + (pt2[[2]]-pt1[[2]])^2 + (pt2[[3]]-pt1[[3]])^2 ]; Overall plot (Note: all graphs have the y axis horizontal and the x axis vertical, against convention, to later help in finding functions for seeable curves.) plot1 = ContourPlot[f[x,y],{y,-10,10},{x,-10,10}, Contours->20]; Solving for lowest seeable points. By cross producting the x and y directional derivatives, I found the perpendicular vector having the {a,b,c} of the Cartesian tangent plane. Substituting in the known points for d and solving for z gave me a function for the tangent plane in terms of x and y. u = {1,0,gradf[2.8,.5].{1,0} }; v = {0,1,gradf[2.8,.5].{0,1} }; tanplane[x_,y_] = Expand[{x - 2.8, y - .5, z - f[2.8,.5]}. Cross[u,v] == 0] -0.21463 - 0.0204676 (-2.8 + x) + 0.00656134 (-0.5 + y) + z == 0 tp[x_,y_] = z/.Solve[tanplane[x,y],z][[1]] 0.160601 + 0.0204676 x - 0.00656134 y Using ImplicitPlot, the list of points where the tangent plane and surface intersect can be seen. This plot was overlaid the above contour plots for an idea of location on the mountain. a = ImplicitPlot[f[x,y]==tp[x,y],{y,-1.5,1.5},{x,-2,.5}, PlotStyle->Thickness[.02]]; We overplot the implicit plot and the contour plot of the viewed mountain. plot2 = ContourPlot[f[x,y],{y,-1.5,1.5},{x,-2,.5}]; Show[{plot2,a}]; Program for mountain top edge, i.e. to see how far into the mountain we can see. This program is based on the principal that the view vector lies on the tangent plane of the points that are on the edge of sight. For this to be true, the vector from the viewpoint will be perpendicular to vector perpendicular to the tangent plane at the point on the mountain. This was evaluated by cross producting the x and y direction derivatives of a point and testing to see if the dot product of the resulting vector and the vector between the viewpoint and the mountain point equal zero. Special thanks to Bob Flaherty and Scott MacDonald for help on this. seeable := Module[{x,y,u,v,view,i}, i=1; maxh = Table[{0,0,0}, {300}]; view = {2.8,.5,f[2.8,.5]}; For[y=-1.5, y<=1.5, y=y+.01, For[x=-2, x>=-2, x=x+.05, u=Cross[{1,0,gradf[x,y].{1,0} }, {0,1,gradf[x,y].{0,1} }]; v={x,y,f[x,y]}-view; If[u.v<0, maxh[[i]]={x-.025,y,f[x-.025,y]}; i++; x=-3; ,] ] ]; ] seeable Organize program points into list and fit function pointdata = Table[{maxh[[i,2]],maxh[[i,1]]}, {i,1,Length[maxh]}]; pointplot = ListPlot[pointdata]; edge[y_]= Fit[pointdata,{y^8,y^7,y^6,y^5,y^4,y^3,y^2,y,1},y]; edgeplot = Plot[edge[y],{y,-1.5,1.5}, PlotStyle->Thickness[.01]]; And here we plot the back border of our visibility on top of the front border and the contour plot of the viewed mountain. Show[{plot2,edgeplot,a}]; Program for bottom view points This program, in similar way to the previous one, will find the points that are at the intersection of the tangent plane and the surface (see implicit plot). This program will only points where x > -1 but from the above graph we can see that we can't see them. lowest := Module[{x,y,i}, i=1; minz = Table[{0,0,0}, {300}]; For[y=-1.5,y<=1.5, y=y+.01, For[x=-1, x>=-1, x=x+.01, If[f[x,y]Thickness[.01]]; Finally we plot the curves, not just implicit plots of the boundaries which bound the region of visibility over the contours of the visible mountain. Show[{plot2,edgeplot,bottomplot}]; (a) Shortest distance To find the point, that we can see, with the shortest distance from where we are we must define a second function that will return the z coordinate of the surface only when the x and y coordinates are within the seeable boundaries (i.e. -1.5 < y < 1.5 and x between the bottom and edge function). If this requirement is not met, the function will return a value for this point in question big enough so that the point cannot be considered as the shortest distance. f2[x_,y_] = If[x>edge[y] && x-1.5 && y<1.5, f[x,y], 100]; view = {2.8, .5, f[2.8,.5]}; mountain[x_,y_] = {x,y,f2[x,y]}; g[x_,y_] = dist[view,mountain[x,y]] 2 2 Sqrt[(-2.8 + x) + (-0.5 + y) + Power[-0.21463 + If[x > edge[y] && x < bottom[y] && y > -1.5 && y < 1.5, f[x, y], 100], 2]] This is a 3D plot describing the distance between points on the mountain and the point where we are at. The lowest point in this graph has the shortest distance. Use FindMinimum to determine this point. Plot3D[g[x,y],{x,-1.5,.5},{y,-1.5,1.5}, PlotPoints->40]; solm = FindMinimum[g[x,y]],{x,0,1},{y,0,1}, MaxIterations->50] {2.56199, {x -> 0.238546, y -> 0.493753}} f[x,y]/.solm[[2]] 0.162457 The nearest point on the mountain is {.239, .494, .162} and it is 2.562 units away. (b) Seeable mountain side Show[{plot2,edgeplot,bottomplot}]; The region bounded by the two lines, the top being the bottom function and the bottom being the edge function (see above), is all one can see of the second mountain from the viewpoint. Review preliminary programs and data fitting for where functions were derived. (c) Surface Area First we define the limiting values. The x limits are {edge[y], bottom[y] }. The y limits are where the edge and bottom function intersect in the above plot. sol = Solve[edge[y]==bottom[y],y]; Since it is easily determined that y must be between -1.5 and 1.5, the only y limits in range are -1.20389 and 1.45025. yl = y/.sol[[2]] yr = y/.sol[[7]] -1.20389 1.45025 Next we use the surface area function, Integrate Sqrt[ 1+ df/dx ^2 + df/dy ^2] dx dy over our respective region. dxf[x_,y_] = gradf[x,y].{1,0}; dyf[x_,y_] = gradf[x,y].{0,1}; NIntegrate[Sqrt[1+dxf[x,y]^2+dyf[x,y]^2], {y,yl,yr}, {x,edge[y],bottom[y]}] 2.24 Thus the total seeable surface area on the other mountain is 2.24 units^2. ISSUES IN SOLUTION All comments and student solution comments came from the Class of 1997, Rose-Hulman Institute of Technology, Integrated First-Year Curriculum in Science, Engineering, and Mathematics, Spring 1994. In general the class does a wonderful job on this problem, indeed on most problems in which cooperative learning is used for no one student is forced to battle a tough idea alone. I have assigned this problem or some variation of it three times over the last four years. There is always another point of view sitting right next to each student in the form of a colleague. Individuals and small groups do some very unique things with the problem. I have tried to outline these approaches below. There were a good many different approaches and while some consensus approaches emerged there were even different variations on this. I require a progress report from the student half way through the problem period. I make some general observations to the students after the progress report has been submitted. I do this through email to the class. We use email to communicate on a routine basis. You should restate the problem or at least not just jump into the problem without some introduction and identification of the issues and the function. Be careful to define your terms and to be sure you have uniqueness, e.g. do not just say "the plane" say "the tangent plane at the point (x, y, z)" Identify and give credit to those with whom you work. In the discussions of the class the notion of not seeing "below" the tangent plane at the "eye-point" emerges quickly and then issues such as determining where the tangent plane intersects the surface follow. While working with a group it becomes apparent that not all approaches are linear, i.e. (a) then (b) then (c) etc., and students are jumping about the problem asking questions of themselves which sometimes address the part they think they are considering, but often lead to looking at issues related to another part of the problem. Indeed, in one section a student immediately offered to determine the (x,y) region of the viewed mountain cut off by the tangent plane and use Mathematica's ImplicitPlot to plot the relation TangentPlane[x,y] - f[x,y] == 0 and then plot this over the contour plot of the function z = f(x,y) and do an inspection of these plots to find the points on the intersection which reaches farthest into the contour plot. When students get ideas often times the faculty, acting as a coach, gets an idea he wishes to pursue, but needs to put on hold in favor of student discovery. For example when this student idea emerged I began to think, "This would seem to indicate we are minimizing d(x,y) subject to constraint of intersection and thus we could use Lagrange technique., i.e. Minimize d(x,y) subject to p(x,y) = f(x,y) where p(x,y) = 0 is the equation of the tangent plane. We make some general observations about the technical work (and these apply to each year's efforts on the part of the students) and then offer some student approaches to specific issues in the problem. Should restate the problem or at least not just jump in to the problem without some introduction and identification of the issues and the function. Be careful to define your terms and to be sure you have uniqueness, e.g. do not just say "the plane" say "the tangent plane at the point (x, y, z)" Mike Freese said, "These failed ideas often lead to better ideas in the long run and were usually not wasted time." Stace Stolzfus under the title Making Molehills out of Mountains devised a simple function newf(x,y) = If[f(x,y) > plane}(x,y), f(x,y), -.2] to "grab" all the points which were above the tangent plane and on the surface. Ideas on finding the closest point visible: Students offer a number of different ideas and approaches in trying to solve "(a) Determine the point on the mountain which you can see which is nearest to you." A number of students will argue that the points of intersection of the tangent plane and the surface must contain the "nearest point" since the mountain slopes away above the tangent plane to the eye-point. Indeed, at a later point in time they find out the tangent plane does contain the nearest point, namely the eye-point itself(!) and some have a tough time getting their algorithm to not converge back to the eye-point. Using a simple loop, actually double loop, one student offers a mesh of points which provide the x and y limits of a reasonable region of visibility and then used an even finer mesh inside this one (say .005) and tested all points in side the boundary to find the closest to be (.241, .47, .162) at a distance of 2.559 units. Two bright students decided to first define the region of visibility (interior region in the (x,y)-plane of the projection onto the (x,y)-plane of the intersection of the tangent plane and the surface) by estimating a collection of points on the intersection through clicking on the above implicit plot in Figure 2. They proceeded to fit polynomial curves to the sampled data points, knowing they could not solve explicitly for x or y. (Mathematica will permit the user to click on the figure and with a hairline obtain the coordinates of the point at which the mouse is located.) Then minimize the distance function (from the eye point to the surface, i.e. d(x,y) = sqrt((x-2.8)^2 + (f(x,y) - f(2.8, .5))^2), where the x = g(y) function fitted to the boundary data was substituted into d(x,y) making it a function of one variable which was easy to minimize. Again this presumes the nearest point occurs at the intersection of the surface and the tangent plane. One of these students then went on to state it best when he said, "A better approach was decided as working backwards and find all the visible points on the second mountain. Then, use the FindMinimum command in Mathematica to find the shortest value of the distance over this range." Another student, after determining the equation of the tangent plane, p(x,y), defined the distance function d(x,y) = If}[f(x,y) > p(x,y),sqrt((x-2.8)^2 + (f(x,y) - f(2.8, .5))^2), 15) . The latter to keep the distance high and then apply the FindMinimum command to this function. A weaker, but persevering student, found f(x,y) - tangentplane(x,y) and went through various y values .41 to .425 in increments of .001 (after seeing the contour plot of the slice on the mountain) printing out the x value of the intersection and the distance to the eye point in one table. Then he selected the point with the smallest distance (.244, .417, .16286) which was 2.5573 units away from eye point. Several folks suggested that the nearest point on the mountain to our eye would be one for which a line from the eye to the point is perpendicular to the surface - but no justification or apparent use of this idea was followed-up. All seemed to be getting something like (.244, 0.4, 0.163) with distance of 2.558 units. We examine some specific student approaches: (Austin Ashby, Rob Rock, and Trent Woodworth) Determine numerically the points of intersection of the tangent plane and the surface and since "the mountain" slopes away above the tangent plane the point on the tangent plane always has to be the closest. (Mike Lockwood) Offer a mesh of points which provide the x and y limits of the region of visibility and then used an even finer mesh inside this one (say .005) and tested all points in side the boundary to find the closest to be (.241, .47, .162) at a distance of 2.559 units. (Scott McDonald, Chris O'Malley) First define the region of visibility through points estimation and then fit curves. Finally minimize the distance function over this region by selecting an x and then and checking for smallest value of distance to the tangent plane intersection with the surface. (Presumes minimum occurs at the intersection of the surface and the tangent plane.) O'Malley stated it best when he said, "A better approach was decided as working backwards and find all the visible points on the second mountain. Then, use the FindMinimum function-like in Mathematica to find the shortest value of the distance over this range." (Winkel idea on McDonald's work -) Define the minimum function from eye point to arbitrary (x, y, f(x,y)) and minimize over the region by going from front intersection (function) of tangent plane and surface to back ridge function. Do this by slicing the x interval into small number of points and seeking the minimum in the region (as one variable problem) - compare end points with internal minimums if they exist. (Michael Evans) After determining the equation of the tangent plane e.g., p(x,y) define the distance function d(x,y) = If[f(x,y) > p(x,y), sqrt((x-2.8)^2 + (f(x,y) - f(2.8, .5))^2}, 15) - the latter to keep the distance high. And then FindMinimum on this function. (James Poylio) Determine the (x,y) region of the viewed mountain cut off by the tangent plane and Implicit Plot this over the contour plot function d(x,y) = sqrt((x-2.8)^2 + (f(x,y) - f(2.8, .5))^2) and do an inspection of these plots to find the points on the intersection which reaches farthest into the contour plot. (Winkel comment on Poylio approach) This would seem to indicate we are minimizing d(x,y) subject to constraint of intersection and thus we could use Lagrange technique., i.e. Minimize d(x,y) subject to p(x,y) = f(x,y) where p(x,y) is the tangent plane. (Mike Freese) Mike found f(x,y) - tangentplane(x,y) and went through various y values .41 to .425 in increments of .001 (after seeing the contour plot of the slice on the mountain) printing out the x value of the intersection and the distance to the eye point in one Table. Then he selected the point with the smallest distance (.244, .417, .16286) which was 2.5573 units away from eye point. (Brian Mathis) Defined a distance function from eye point to surface and ground out a Table of distances over a grid (he used mesh of size 1 and could have used a smaller mesh) from which he extracted the nearest point. Several folks suggested that the nearest point on the mountain to our eye would be one for which a line from the eye to the point is perpendicular to the surface - but no justification or apparent use of this idea was followed-up. All seem to be getting something like (.244, 0.4, 0.163) with distance of 2.558 units. Ideas on points on second mountain which are visible In attempting to describe what you can see on the other mountain, most students went with determining boundary of region you could see. This meant determining the points of intersection of the surface with the tangent plane - which was not in closed form, but which consisted of a number of points obtained by numerical solving for y coordinates when an x coordinate was offered. As to what one could see at the "top" of the mountain. There were a number of ideas, including find the highest point on the other peak to which a number of student immediately said, "But you probably can't see that top point." Students would attempt to get a window on what we can see by swinging out from the center until the surface is no longer "hit" by our line of vision, the same would apply to up to get a top view limit. But, in practice, these ideas were never implemented. Also they would say things like, "Place a stick end where your eye is and let it fall until it lays on the surface of the viewed mountain. You cannot see beyond that point of contact in that line of view." This proved to be a very powerful image for students and it led to the following idea: "The line (L) from our eye-point to the other mountain of the surface which just lies on the other surface will touch the other surface at a point at which the normal (N) to the surface at that point and L are perpendicular, i.e. the dot products of the directions of N and of L must be 0." Or "A point on the second mountain is visible if the dot product with the vector from the eye to this point, L, with the normal vector to the surface at this point, N, is greater than zero, i.e.~the angle between the vectors is less than 90 degrees. Here it is noted that the z value of the points in question on the surface have to be greater than the z value of the point with the same (x,y) coordinates on the plane, i.e. the point is visible if it is also above the plane." We examine some specific student approaches: (Chris O'Malley) Idea is that a point on the second mountain is visible if the dot product with the vector from the eye to this point with the normal vector to the surface at this point is greater than zero, i.e. the angle between the vectors was less than 90 degrees. Here it is noted that the z value of the points in question on the surface have to be greater than the z value of the point with the same (x,y) coordinates on the plane. The function using an IF statement for two parts (1) angle test and (2) test - described above - is contour plotted to give very graphic image of what points can be seen. (Chad van Fleet) Chad had perhaps the best exposition on the visibility function described above by Chris. Moreover, he made an array of all visible points over a mesh within the boundaries and then checked the distance for each of these visible points with a nice Do loop looking for minimums. (Michael Evans) After determining the equation of the tangent plane e.g. p(x,y) define the visible point function v[x_,y_] = If[f[x,y] > p[x,y], f[x,y], f[2.8,.5]]. (From preliminary report of Greg Roberts) The first idea that Brian Shivers and I came up with is the idea that is we could make the second hillside, the one we see, a line in two space, a line perpendicular to that line running through our position point, would be the shortest distance. The problem with this is that one, we are in three space not two, and two the perpendicular line through the hill and our point may not be actually visible to us. Ideas on tangent plane boundary Implicit Plot intersection of tangent plane at eyepoint and the surface. Numerically solve the intersection of tangent plane and surface. Fit a curve through the numerical set of points to outline the intersection of tangent plane and surface. (Chris O'Malley) Chris stated "that the parametric representation of the tangent plane was less useful than the Cartesian one." Ideas on ridge boundary: Consider points (x, y, f(x,y)) on the surface which are (1) on tangent plane and (2) where dot product of normal to surface and vector connecting that point and the eye point is zero. (Dan Morrisey) Took the above points and fitted an eight degree polynomial to them - looks good. Ideas on surface area (Austin Ashby, Rob Rock, and Trent Woodworth) To find the surface area visualize two cones - one using the smaller side (due to the tilt) of the mountain and the other using the larger side. Obtain the average of these surface areas and then determine the angle out of the full 360 degrees which is subtended by the extreme (left and right) tangent lines from the eyepoint. (Mike Lockwood) Offer a mesh of points which provide the x and y limits of the region of visibility and then integrate the element of surface area over each square in the mesh to get approximately surfacer area of 2.232 square units. (Greg Hawkins) Confine the region of visibility in the x-y plane by approximations, e.g. by parts of circle and a line and then integrate the surface area. (Dan Morrisey) After fitting polynomial curves to data of the ridge points and the intersection of the tangent line the surface area element is integrated over the region as a double integral. (Brian Shivers) Approximated the region over which we should integrate by semicircle and two straight lines. (Chris O'Malley) Tried to write a loop to integrate for fixed x from the lowest visible point to the highest visible point using a mesh and a test to see if the element of surface area should be contributed. (Mike Freese) Obtain the two extreme tangent lines from the eyepoint and use these to bound a triangle as an estimate. When he tried to find the description of the right hand near boundary of the the plane intersected with the mountain he could not get a description over which to integrate. (Chad van Fleet) Sliced vertically across the range and added the "arc lengths times the change in x" (actually the little elements of surface area) - checking to be sure each point which would contribute was visible. (Brennan Johnson) He estimated the average slope of the surface (did not say how) and over the mesh placed on the visible region he multiplied the area of the little elements of x-y squares by the slope and then added up the surface area estimate for each little rectangle. (Shawn Leonard) He broke the underlying x-y region into triangular regions, but needed to then integrate the elements of surface area to get the estimate of surface area above on the surface.