CMFY(3NCARG)

πŸ“¦ version 6.6.2, in epel 9, fedora 43, fedora 44

πŸ’– NAME πŸ’–

okay bestie, listen up β€” this whole page lives in the NCAR Graphics section of the manual, and there are actually two pages smooshed together here, so let's do this properly.

First one: CMFY β€” it converts from metacode coordinates to fractional coordinates. That's the whole vibe. ✨

Second one: spps_converters β€” and this is the glow-up. It's a whole set of functions, each of which transforms a coordinate from one of the NCAR Graphics coordinate systems to another. The complete list of functions is, and I quote, the following: CFUX, CFUY, CMFX, CMFY, CMUX, CMUY, CPFX, CPFY, CPUX, CPUY, CUFX, CUFY, KFMX, KFMY, KFPX, KFPY, KMPX, KMPY, KPMX, KPMY, KUMX, KUMY, KUPX, and KUPY. πŸ‘‘


🌈 STATUS 🌈

Plotter Address Units (PAUs) and Metacode Units (MUs) are no longer used in NCAR Graphics. so basically, every single function with either an M or a P as the second or third letter of its name is considered obsolete. rip to them, they're legacy now. πŸ’€

The current recognized coordinate systems, aka the ones that still get invited to the party, are:

  • GKS world coordinates
  • GKS normalized device coordinates
  • NCAR Graphics fractional coordinates
  • NCAR Graphics user coordinates

If you want the full descriptions of these coordinate systems, go read the NCAR Graphics document "NCAR Graphics Fundamentals, UNIX Version". it's giving required reading, ngl. πŸ“š

Now β€” because we're not monsters β€” the following definitions of the PAU coordinate system and the MU coordinate system are provided, purely for the purpose of interpreting and converting codes which use PAUs or MUs:

πŸŽ€ the PAU situation

The plotter coordinates of a point are integers IPX and IPY, where IPX is between 1 and 2**MX and IPY is between 1 and 2**MY.

MX and MY are internal parameters of SPPS. each one has a default value of 10. you can set values of MX and MY by calling the routines SETI or SETUSV, and retrieve them by calling the routines GETSI or GETUSV. easy peasy. ✨

πŸ¦‹ the MU situation

The metacode coordinates of a point are integers IMX and IMY between 0 and 32767 inclusive.

The area addressed is a square in a "metacode space" that is usually mapped into a square subset of the addressable area of the plotting device.

Metacode coordinates were used in calls to the routine PLOTIT and are returned in calls to FL2INT. so that's where they live now. πŸ’…


✨ SYNOPSIS ✨

Current, aka the ones you should actually be using:

Current:
X = CFUX (RX),  Y = CFUY(RY)
X = CUFX (RX),  Y = CUFY(RY)

Obsolete, aka the ones living in the past (still documented tho, no gatekeeping here):

Obsolete:
X = CMUX (IX),  Y = CMUY(IY)
X = CPUX (IX),  Y = CPUY(IY)
X = CMFX (IX),  Y = CMFY(IY)
X = CPFX (IX),  Y = CPFY(IY)
I = KFMX (RX),  J = KFMY(RY)
I = KUMX (RX),  J = KUMY(RY)
I = KFPX (RX),  J = KFPY(RY)
I = KUPX (RX),  J = KUPY(RY)
I = KPMX (IX),  J = KPMY(IY)
I = KMPX (IX),  J = KMPY(IY)

🌸 C-BINDING SYNOPSIS 🌸

#include <ncarg/ncargC.h>

float c_cfux (float rx)

float c_cfuy (float ry)

float c_cufx (float rx)

float c_cufy (float ry)

πŸ’œ DESCRIPTION πŸ’œ

  • RX β€” an input expression of type REAL, and it's an X coordinate in whatever coordinate system the second letter of the function name says it is. In a reference to CFUX, RX is a fractional X coordinate; in a reference to CUFX, RX is a user X coordinate. the name literally tells you everything, iykyk.
  • RY β€” an input expression of type REAL, and it's a Y coordinate in whatever coordinate system the second letter of the function name says it is. In a reference to CFUY, RY is a fractional Y coordinate; in a reference to CUFY, RY is a user Y coordinate.
  • IX and IY β€” these only show up as arguments in references to some of the obsolete functions. they represent input expressions of type INTEGER, specifying the X and Y coordinates of a point in either PAUs or MUs (depending on the second letter of the function name). so yeah, only the vintage ones get these. πŸ™ˆ

Now let's decode the function names, because the naming scheme here is honestly iconic once you see it:

  • The first letter is a C if the result is of type REAL and a K if the result is of type INTEGER (the latter only happens for some of the obsolete ones). This conforms to the usual FORTRAN convention for implicit typing. classic.
  • The second letter specifies the coordinate system of the argument.
  • The third letter specifies the coordinate system of the functional result. In references to CFUX and CFUY, the result is in the user system; in references to CUFX and CUFY, the result is in the fractional system. see how it flips? obsessed. 🫢
  • The fourth letter is an X or a Y, depending on whether an X or a Y coordinate is being converted. obviously.

🧚 C-BINDING DESCRIPTION 🧚

The C-binding argument description is the same as the FORTRAN argument description. no notes, it just is. periodt.


🌟 EXAMPLES 🌟

Use the ncargex command to see the following relevant examples which use coordinate converters: mpex10, cbex10, sfex02, epltch.

And specifically, the command:

ncargex -n mpex10

will load the driver mpex10.f into your current working directory, where you can examine the file using a local editor, or the UNIX more command. go look at it bestie, it's right there. πŸ‘€


πŸ‘‘ ACCESS πŸ‘‘

There were 24 conversion functions in the original set. These functions (12 for the X coordinate of a point, and 12 for the Y coordinate) allowed one to convert between any combination of PAUs, MUs, fractional coordinates, and user coordinates. a whole grid of possibilities. slay.

But PAUs and MUs are now obsolete, so only four of the conversion functions are still pertinent:

  • CFUX and CFUY allow one to convert the X and Y coordinates of a point from the fractional system to the user system
  • while CUFX and CUFY do the opposite.

To use any of the conversion routines, load the NCAR Graphics libraries ncarg, ncarg_gks, and ncarg_c, preferably in that order. order matters, don't be chaotic. πŸ’…


🌈 SEE ALSO 🌈

Online: cfux, cfuy, cmfx, cmfy, cmux, cmuy, cpfx, cpfy, cpux, cpuy, cufx, cufy, kfmx, kfmy, kfpx, kfpy, kmpx, kmpy, kpmx, kpmy, kumx, kumy, kupx, kupy, spps, ncarg_cbind

Hardcopy: NCAR Graphics Fundamentals, UNIX Version; User's Guide for NCAR GKS-0A Graphics


Copyright (C) 1987-2009 University Corporation for Atmospheric Research

The use of this Software is governed by a License Agreement.


and that's the whole thing, bestie πŸ’– this page is CMFY(3NCARG) over in NCAR Graphics, and the little set-of-converters page riding along with it is SPPS_converters(3NCARG) β€” both stamped UNIX, both dated March 1993. go convert some coordinates, you've got this πŸ¦‹βœ¨

πŸ“¦ where this page comes from