model_x()

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 March 06, 2023 02:49:26am UTC