### 2 releases

0.0.1 | Apr 17, 2023 |
---|---|

0.0.0 | Apr 17, 2023 |

#**5** in #cgal-library

**MPL-2.0**license

82KB

2K
SLoC

# Projective Transformations

`use` `projective``::`Projective`;`
`#``[``derive``(``Debug``,` Copy`,` Clone`,` PartialEq`)``]`
`pub` `struct` `Point``(``f64`, `f64``)``;`
`impl` `Projective``<``f64``>` `for`` ``Point` `{`
`fn` `transform``(``self`, `matrix``:` `&`[`f64`; 9]`)`` ``->` `Self` `{`
Point`(`
matrix`[``2``]` `+` matrix`[``0``]` `*` `self``.``0` `+` matrix`[``1``]` `*` `self``.``1``,`
matrix`[``5``]` `+` matrix`[``3``]` `*` `self``.``0` `+` matrix`[``4``]` `*` `self``.``1`
`)`
`}`
`}`
`#``[``test``]`
`fn` `test_transform``(``)`` ``{`
`let` p0 `=` Point`(``1.``0``,` `2.``0``)``;`
`assert_eq!``(`p0`.``translate``(``2.``0``,` `1.``0``)``,` Point`(``3.``0``,` `3.``0``)``)``;`
`assert_eq!``(`p0`.``scale``(``2.``0``,` `3.``0``)``,` Point`(``2.``0``,` `6.``0``)``)``;`
`//` floating precision error, implement rotate manually to reduce errors
`assert_eq!``(`p0`.``rotate``(``std``::``f64``::``consts``::``PI``)``,` Point`(``-``0.``9999999999999998``,` `-``2.``0``)``)``;`
`}`

#### Dependencies

~585KB

~10K SLoC