CPUX(3NCARG)

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

πŸ’– NAME πŸ’–

CPUX β€” converts from plotter address unit coordinates to user coordinates. πŸŽ€

(hey bestie, this page lives in the NCAR GRAPHICS manual, and it's actually the little front page for a whole family of coordinate-converter functions, so buckle up πŸ¦‹)


🌈 SPPS_converters 🌈

✨ NAME ✨

spps_converters β€” a whole squad of functions, each one transforming a coordinate from one NCAR Graphics coordinate system to another. The complete list of functions is as follows: 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. Which means, bestie: every function with either an M or a P as the second or third letter of its name is obsolete. Not deprecated-cute, not retro-cool β€” obsolete. πŸͺ¦

The coordinate systems that are currently recognized are GKS world coordinates, GKS normalized device coordinates, NCAR Graphics fractional coordinates, and NCAR Graphics user coordinates. If you want the actual descriptions of these coordinate systems, go read the NCAR Graphics document "NCAR Graphics Fundamentals, UNIX Version". πŸ“–

Okay so the following definitions of the PAU coordinate system and the MU coordinate system are here purely so you can interpret and convert codes that use PAUs or MUs:

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 has a default value of 10. Values of MX and MY can be set by calling the routines SETI or SETUSV and retrieved by calling the routines GETSI or GETUSV. πŸ”’

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. 🌸

🌟 SYNOPSIS 🌟

Current:

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

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. So in a reference to CFUX, RX is a fractional X coordinate; in a reference to CUFX, RX is a user X coordinate. ✨
  • 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. 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're input expressions of type INTEGER, specifying the X and Y coordinates of a point in either PAUs or MUs (which one depends on the second letter of the function name). πŸ™ˆ

Now let's decode the naming scheme, because it's giving ✨secret code✨ but it's actually so smart:

  • The first letter is a C if the result is of type REAL, and a K if the result is of type INTEGER (and that second one only happens for some of the obsolete ones). This conforms to the usual FORTRAN convention for implicit typing. 🧠
  • 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.
  • The fourth letter is an X or a Y, depending on whether an X or a Y coordinate is being converted. 🎯

πŸŽ€ C-BINDING DESCRIPTION πŸŽ€

The C-binding argument description is the same as the FORTRAN argument description. (yes, literally the same, you're welcome πŸ’–)

πŸ”₯ EXAMPLES πŸ”₯

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

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. πŸ“

πŸ‘‘ 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. PAUs and MUs are now obsolete; thus, 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 load the NCAR Graphics libraries ncarg, ncarg_gks, and ncarg_c, preferably in that order. (and yes, the original really does say "load the load the" β€” iconic behavior, we keep it exactly as-is, no cap 😭)

πŸ’œ 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.


okay that's the whole thing, bestie, every last flag and function accounted for 🫢 go convert some coordinates and slay πŸ’…

signing off from the UNIX manual, March 1993 β€” SPPS_converters(3NCARG) πŸŽ€βœ¨

πŸ“¦ where this page comes from