Update README to describe the new swizzling feature
This commit is contained in:
parent
ae7a85305c
commit
61da8e4720
1 changed files with 26 additions and 0 deletions
26
README.md
26
README.md
|
@ -32,6 +32,32 @@ vectors"), meaning when transforming a vector with a matrix, the matrix goes
|
||||||
on the left. This is reflected in the fact that cgmath implements the
|
on the left. This is reflected in the fact that cgmath implements the
|
||||||
multiplication operator for Matrix * Vector, but not Vector * Matrix.
|
multiplication operator for Matrix * Vector, but not Vector * Matrix.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
### Swizzling
|
||||||
|
This library offers an optional feature called
|
||||||
|
["swizzling"](https://en.wikipedia.org/wiki/Swizzling_(computer_graphics))
|
||||||
|
widely familiar to GPU programmers. To enable swizzle operators, pass the
|
||||||
|
`--features="swizzle"` option to cargo. Enabling this feature will increase
|
||||||
|
the size of the cgmath library by approximately 0.6MB. This isn't an
|
||||||
|
issue if the library is linked in the "normal" way by adding cgmath as a
|
||||||
|
dependency in Cargo.toml, which will link cgmath statically so all unused
|
||||||
|
swizzle operators will be optimized away by the compiler in release mode.
|
||||||
|
|
||||||
|
#### Example
|
||||||
|
If we have
|
||||||
|
```rust
|
||||||
|
let v = Vector3::new(1.0, 2.0, 3.0);
|
||||||
|
```
|
||||||
|
then `v.xyxz()` produces a
|
||||||
|
```rust
|
||||||
|
Vector4 { x: 1.0, y: 2.0, z: 1.0, w: 3.0 }
|
||||||
|
```
|
||||||
|
and `v.zy()` produces a
|
||||||
|
```rust
|
||||||
|
Vector2 { x: 3.0, y: 2.0 }
|
||||||
|
```
|
||||||
|
|
||||||
## Limitations
|
## Limitations
|
||||||
|
|
||||||
cgmath is _not_ an n-dimensional library and is aimed at computer graphics
|
cgmath is _not_ an n-dimensional library and is aimed at computer graphics
|
||||||
|
|
Loading…
Reference in a new issue