ISOSRF(3NCARG)

ISOSRF πŸ’–βœ¨ (the NCAR Graphics manual, bestie edition)

okay so. hi. you're here because you wanna draw an isosurface and you opened the NCAR GRAPHICS manual like a good little student. slay. this page is literally the whole vibe. let's get into it 🫢


✨ NAME ✨

ISOSRF β€” draws an isosurface. that's it. that's the whole thing. it draws the surface. πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

CALL ISOSRF (F,LU,MU,LV,MV,MW,EYE,MUVWP2,SLAB,FISO,IFLAG)

🌸 C-BINDING SYNOPSIS 🌸

#include <ncarg/ncargC.h>

void c_isosrf (float *f, int lu, int mu, int lv, int mv,
int mw, float eye[3], int muvwp2, float *slab, float fiso,
int iflag)

πŸ¦‹ UTILITY πŸ¦‹

this routine is part of the Isosurface utility in NCAR Graphics, no cap. if you want the big-picture overview of the whole utility, just run man isosurface and let it cook. πŸ‘‘


πŸ’œ DESCRIPTION πŸ’œ

here come the arguments, bestie. every single one. buckle up.

  • F β€” an input array of type REAL, dimensioned LU x LV x m, where m is greater than or equal to MW. it's a three-dimensional array of data defining the function f(u,v,w). and listen β€” only the portion of the array made of elements F(IU,IV,IW), for IU = 1 to MU, IV = 1 to MV, and IW = 1 to MW, is gonna get used. that might be the whole array, might not, we don't judge. the data are considered to lie in a box in 3-space with opposite corners (in the UVW coordinate system) at (1.,1.,1.) and (REAL(MU),REAL(MV),REAL(MW)). and F(IU,IV,IW) is considered to be the value of the function f at the point (REAL(IU),REAL(IV),REAL(IW)). periodt.
  • LU β€” an input expression of type INTEGER, and it's the first dimension of the array F. πŸ“
  • MU β€” an input expression of type INTEGER that defines the range to be used for the first subscript of the array F.
  • LV β€” an input expression of type INTEGER, the second dimension of the array F. she's giving dimension energy.
  • MV β€” an input expression of type INTEGER that defines the range to be used for the second subscript of the array F.
  • MW β€” an input expression of type INTEGER that defines the range to be used for the third subscript of the array F. third one. we love consistency.
  • EYE β€” an input array of type REAL, dimensioned 3, and it's the position of the eye in the UVW coordinate system. the eye position, at (EYE(1),EYE(2),EYE(3)), must be outside the box containing the data. the point being looked at is at the center of the data box, and the projection plane is perpendicular to the line of sight. and while you're still gaining experience with the routine, a good choice for EYE is (5.*REAL(MU),3.5*REAL(MV),2.*REAL(MW)). write that down. ✍️
  • MUVWP2 β€” an input expression of type INTEGER with the value MAX(MU,MV,MW)+2. the name literally spells it out, iconic.
  • SLAB β€” a scratch array of type REAL, dimensioned at least MUVWP2 x MUVWP2. it's a workspace for ISOSRF. just let her do her thing in there.
  • FISO β€” an input expression of type REAL, and it's the value of fiso in the equation f(u,v,w)=fiso, which defines the isosurface to be drawn. this is the whole point of the whole routine, no pressure. πŸ”₯
  • IFLAG β€” an input expression of type INTEGER that serves two purposes, she's multitalented:
    • the absolute value of IFLAG determines which type of lines are drawn to approximate the isosurface. three types of lines are considered: lines of constant U, lines of constant V, and lines of constant W. the following table lists the types of lines drawn for various values of ABS(IFLAG):
ABS(IFLAG)   Constant U   Constant V   Constant W

    1            no           no          yes
    2            no          yes           no
    3            no          yes          yes
    4           yes           no           no
    5           yes           no          yes
    6           yes          yes           no
    7           yes           yes          yes
  • the sign of IFLAG determines what is inside and what is outside the solid bounded by the isosurface, and thus which lines are visible and what is done at the boundary of the box containing the data. if IFLAG is positive, values greater than FISO are considered to be inside the solid formed by the isosurface. if IFLAG is negative, values less than FISO are considered to be inside the solid formed by the isosurface. and if the algorithm draws a cube, reverse the sign of IFLAG. yeah. noted. 🫑

🌈 C-BINDING DESCRIPTION 🌈

the C-binding argument descriptions are the same as the Fortran argument descriptions, with the following exceptions, bestie:

  • f β€” t is dimensioned mw by mv by mu
  • mu β€” the third dimension of the array f
  • mw β€” the first dimension of the array f
okay so yeah the dimensions get shuffled around in C-land. do not come for me, that's just what the page says. πŸ™ˆ

⭐ USAGE ⭐

  • transformations can be achieved by adjusting scaling statement functions in ISOSRF, SET3D, and TR32. cute, customizable, we love.
  • the hidden-line algorithm is not exact, so visibility errors can occur. πŸ’€ yeah. heads up. she's approximate, she's doing her best.
  • three-dimensional perspective character labeling of isosurfaces is possible by calling the routine PWRZI. slay. πŸŽ€

🧚 EXAMPLES 🧚

use the ncargex command to see the following relevant examples: tisosr, tpwrzi, fisissrf, fispwrzi. go look at them. they ate. πŸ’…


πŸ‘‘ ACCESS πŸ‘‘

to use ISOSRF or c_isosrf, load the NCAR Graphics libraries ncarg, ncarg_gks, and ncarg_c, preferably in that order. in that order. did you hear me. in that order. 🫢


πŸ’– SEE ALSO πŸ’–

  • Online: isosurface, isosurface_params, ezisos, isgeti, isgetr, isseti, issetr, pwrzi, ncarg_cbind
  • Hardcopy: NCAR Graphics Fundamentals, UNIX Version

Copyright (C) 1987-2009 University Corporation for Atmospheric Research The use of this Software is governed by a License Agreement.


okay that's the whole page, bestie, you're fully educated now. ✨

UNIX Β· March 1993 Β· ISOSRF(3NCARG) β€” yeah she's an elder but she still serves. go draw that isosurface. i believe in you. πŸ’œπŸ¦‹πŸŒΈ