---
name: "Scale"
section: "3"
platform: "linux"
package: "libvolpack1-dev"
version: "1.0b3-10"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Scale"
---

# Scale(3)

multiply the current transformation matrix by a scaling matrix

## NAME

vpScale - multiply the current transformation matrix by a scaling matrix

## SYNOPSIS

\#include \<volpack.h\>

vpResult

**vpScale(***vpc, sx, sy, sz***)**

-

  vpContext *\*vpc;*

-

  double *sx*

-

  *double sy*

-

  *double sz*

## ARGUMENTS

- *vpc*

  *VolPack context from* **vpCreateContext.**

- *sx*

  Scale factor for the X dimension.

- *sy*

  Scale factor for the Y dimension.

- *sz*

  Scale factor for the Z dimension.

## DESCRIPTION

**vpScale** is used to multiply the current transformation matrix by a 4-by-4 scaling matrix.  The arguments specify independent scale factors for each of the three cartesian axes.  The scaling matrix is:

-

  	sx	0	0	0\
  \
   	0	sy	0	0\
  \
   	0	0	sz	0\
  \
   	0	0	0	1

Use **vpCurrentMatrix** to set the current transformation matrix.  By default, the scaling matrix is post-multiplied (M = M\*S where M is the current matrix and S is the scaling matrix).  The VP\_CONCAT\_MODE option to **vpSeti** can be used to select pre-multiplication.

## STATE VARIABLES

The current matrix concatenation parameters can be retrieved with the following state variable codes (see vpGeti(3)): VP\_CURRENT\_MATRIX, VP\_CONCAT\_MODE.

## ERRORS

The return value is always VP\_OK.

## SEE ALSO

[VolPack(3)](/VolPack/3.md), vpCreateContext(3), vpCurrentMatrix(3)
