# vector3d QML Basic Type

a value with x, y, and z attributes.

The `vector3d` type refers to a value with `x`, `y`, and `z` attributes.

To create a `vector3d` value, specify it as a "x,y,z" string:

`Rotation { angle: 60; axis: "0,1,0" }`

or with the Qt.vector3d() function:

`Rotation { angle: 60; axis: Qt.vector3d(0, 1, 0) }`

or as separate `x`, `y`, and `z` components:

`Rotation { angle: 60; axis.x: 0; axis.y: 1; axis.z: 0 }`

Each attribute of a vector3d value is stored internally as a single-precision floating point number (`float`).

When integrating with C++, note that any QVector3D value passed into QML from C++ is automatically converted into a `vector3d` value, and vice-versa.

The vector3d type has the following idempotent functions which can be invoked in QML:

Function SignatureDescriptionExample
vector3d crossProduct(vector3d other)Returns the vector3d result of the cross product of `this` vector3d with the `other` vector3d
```var a = Qt.vector3d(1,2,3);
var b = Qt.vector3d(4,5,6);
var c = a.crossProduct(b);
console.log(c.toString()); // QVector3D(-3, 6, -3)```
real dotProduct(vector3d other)Returns the scalar real result of the dot product of `this` vector3d with the `other` vector3d
```var a = Qt.vector3d(1,2,3);
var b = Qt.vector3d(4,5,6);
var c = a.dotProduct(b);
console.log(c); // 32```
vector3d times(matrix4x4 matrix)Returns the vector3d result of transforming `this` vector3d with the 4x4 `matrix` with the matrix applied post-vector
```var a = Qt.vector3d(1,2,3);
var b = Qt.matrix4x4(4,5,6,7,8,9,10,11,
12,13,14,15,16,17,18,19);
var c = a.times(b);
console.log(c.toString());
// QVector3D(0.774194, 0.849462, 0.924731)```
vector3d times(vector3d other)Returns the vector3d result of multiplying `this` vector3d with the `other` vector3d
```var a = Qt.vector3d(1,2,3);
var b = Qt.vector3d(4,5,6);
var c = a.times(b);
console.log(c.toString()); // QVector3D(4, 10, 18)```
vector3d times(real factor)Returns the vector3d result of multiplying `this` vector3d with the scalar `factor`
```var a = Qt.vector3d(1,2,3);
var b = 4.48;
var c = a.times(b);
console.log(c.toString()); // QVector3D(4.48, 8.96, 13.44)```
vector3d plus(vector3d other)Returns the vector3d result of the addition of `this` vector3d with the `other` vector3d
```var a = Qt.vector3d(1,2,3);
var b = Qt.vector3d(4,5,6);
var c = a.plus(b);
console.log(c.toString()); // QVector3D(5, 7, 9)```
vector3d minus(vector3d other)Returns the vector3d result of the subtraction of `other` vector3d from `this` vector3d
```var a = Qt.vector3d(1,2,3);
var b = Qt.vector3d(4,5,6);
var c = a.minus(b);
console.log(c.toString()); // QVector3D(-3, -3, -3)```
vector3d normalized()Returns the normalized form of `this` vector
```var a = Qt.vector3d(1,2,3);
var b = a.normalized();
console.log(b.toString());
// QVector3D(0.267261, 0.534522, 0.801784)```
real length()Returns the scalar real value of the length of `this` vector3d
```var a = Qt.vector3d(1,2,3);
var b = a.length();
console.log(b.toString()); // 3.7416573867739413```
vector2d toVector2d()Returns the vector2d result of converting `this` vector3d to a vector2d
```var a = Qt.vector3d(1,2,3);
var b = a.toVector2d();
console.log(b.toString()); // QVector2D(1, 2)```
vector4d toVector4d()Returns the vector4d result of converting `this` vector3d to a vector4d
```var a = Qt.vector3d(1,2,3);
var b = a.toVector4d();
console.log(b.toString()); // QVector4D(1, 2, 3, 0)```
bool fuzzyEquals(vector3d other, real epsilon)Returns true if `this` vector3d is approximately equal to the `other` vector3d. The approximation will be true if each attribute of `this` is within `epsilon` of `other`. Note that `epsilon` is an optional argument, the default `epsilon` is 0.00001.
```var a = Qt.vector3d(1,2,3);
var b = Qt.vector3d(1.0001, 1.9998, 2.0001);
var c = a.fuzzyEquals(b);        // default epsilon
var d = a.fuzzyEquals(b, 0.005); // supplied epsilon
console.log(c + " " + d); // false true```

This basic type is provided by the QtQuick import.

See also QML Basic Types.

© 2017 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.