[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*Subject*: Creating a sphere (Object Graphics)*From*: "Jason P. Meyers" <jpm7934(at)cis.rit.edu>*Date*: Mon, 29 Jan 2001 12:43:28 -0500*Newsgroups*: comp.lang.idl-pvwave*Organization*: Rochester Institute of Technology*XPident*: Unknown*XPident*: Unknown*Xref*: news.doit.wisc.edu comp.lang.idl-pvwave:23280

Hello All, I have recently taken a plunge into object graphics. (I think my head is still above water but I dunno for sure!) I spent many hours last night trying to create a "simple" (hah!) spherical surface and display it using Dave's FSC_Surface program. (Dave's program was worth its weight in Gold, Oops electrons don't weight much do they?) Anyway, I came up with the procedure listed below which produces 2-D x, y, and z arrays which display a sphere. My problem is that while this works for the most part, I can still see some seems and other "imperfections" when I rotate the surface in Dave's program. I was a bit surprised to find that IDL doesn't have a 3-D sphere function/procedure up its sleeve. Nor could I find one at Eric Deutsch's IDL web search (http://www.astro.washington.edu/deutsch/idl/htmlhelp/index.html). Does anyone know of a better way (or minor improvement) of making a "better looking" sphere. I don't want to spend too much more time on this part of my project. But if I could have a cool shining sphere, that would be nice. Thanks in advance for any and all suggestions, Jason Meyers PhD Student, Center for Imaging Science Rochester Institute of Technology jpm7934@rit.edu PRO JPM_Make_Sphere, n, x=x, y=y, z=z ; This procedure creates 2-D arrays that can be used to display a sphere ; using the IDLgrSurface object ; Parameter: n : array width (must be odd, but we'll make it odd if it's not) ; n = 31 produces a fairly nice sphere ; Keywords: x,y,z : named variables to contain the 2-D arrays (n x 2n-1) ; Check for the proper number of parameters If (N_Params() ne 1) then RETURN ; check for non-numeric n and ensure it is an odd integer nType = size(n, /type) Case nType of 0 : RETURN 7 : RETURN 8 : RETURN 10 : RETURN 11 : RETURN Else : n = abs((fix(n)/2)*2+1) EndCase ; Done checking n ; Tweeking the value of m adjusts the spacing of points along the z-profile. m=1.3 ; Create the arrays x = (y = (z = fltarr(n, 2*n-1))) xx = ((findgen(n) - float(n/2))/float(n/2)) # Transpose(fltarr(n)+1.0) yy = rotate(xx,1) x1 = cos(atan(yy,xx))*(sqrt(abs(1-(1-abs(xx))^m)) > sqrt(abs(1-(1-abs(yy))^m))) y1 = sin(atan(yy,xx))*(sqrt(abs(1-(1-abs(xx))^m)) > sqrt(abs(1-(1-abs(yy))^m))) x[*,0:n-1] = x1 x[*,n-1:*] = reverse(x1,2) y[*,0:n-1] = y1 y[*,n-1:*] = reverse(y1,2) z = sqrt((1.0-x^2.0-y^2.0) > 0.0) z[*,n-1:*] = -reverse(z[*,0:n-1],2) end ; JPM_Make_Sphere

**Follow-Ups**:**Re: Creating a sphere (Object Graphics)***From:*David Fanning

**Re: Creating a sphere (Object Graphics)***From:*Jason P. Meyers

- Prev by Date:
**Re: Probably a simple question, but I'm only a beginner with this IDL stuff :)** - Next by Date:
**Re: Creating a sphere (Object Graphics)** - Prev by thread:
**Re: Probably a simple question, but I'm only a beginner with this IDL stuff :)** - Next by thread:
**Re: Creating a sphere (Object Graphics)** - Index(es):