# model_x()#

Returns the three-dimensional X, Y, Z position in model space.

## Examples#

```def setup():
py5.size(500, 500, py5.P3D)
py5.no_fill()

def draw():
py5.background(0)

py5.push_matrix()
# start at the middle of the screen
py5.translate(py5.width//2, py5.height//2, -200)
# some random rotation to make things interesting
py5.rotate_y(1.0)  # yrot)
py5.rotate_z(2.0)  # zrot)
# rotate in X a little more each frame
py5.rotate_x(py5.frame_count/100.0)
# offset from_ center
py5.translate(0, 150, 0)

# draw a white box outline at (0, 0, 0)
py5.stroke(255)
py5.box(50)

# the box was drawn at (0, 0, 0), store that location
x = py5.model_x(0, 0, 0)
y = py5.model_y(0, 0, 0)
z = py5.model_z(0, 0, 0)
# clear out all the transformations
py5.pop_matrix()

# draw another box at the same (x, y, z) coordinate as the other
py5.push_matrix()
py5.translate(x, y, z)
py5.stroke(255, 0, 0)
py5.box(50)
py5.pop_matrix()
```

## Description#

Returns the three-dimensional X, Y, Z position in model space. This returns the X value for a given coordinate based on the current set of transformations (scale, rotate, translate, etc.) The X value can be used to place an object in space relative to the location of the original point once the transformations are no longer in use.

In the example, the `model_x()`, model_y(), and model_z() functions record the location of a box in space after being placed using a series of translate and rotate commands. After pop_matrix() is called, those transformations no longer apply, but the (x, y, z) coordinate returned by the model functions is used to place another box in the same location.

Underlying Processing method: modelX

## Signatures#

```model_x(
x: float,  # 3D x-coordinate to be mapped
y: float,  # 3D y-coordinate to be mapped
z: float,  # 3D z-coordinate to be mapped
/,
) -> float
```

Updated on September 01, 2022 16:36:02pm UTC