Add point conversion methods for vec2 and vec3 types
This commit is contained in:
parent
e12f561930
commit
053586c8e2
1 changed files with 41 additions and 0 deletions
|
@ -13,7 +13,12 @@
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
|
#[cfg(geom)]
|
||||||
|
use std::cast;
|
||||||
|
|
||||||
use core::Dimensional;
|
use core::Dimensional;
|
||||||
|
#[cfg(geom)]
|
||||||
|
use geom::{Point2, Point3};
|
||||||
|
|
||||||
#[path = "../num_macros.rs"]
|
#[path = "../num_macros.rs"]
|
||||||
mod num_macros;
|
mod num_macros;
|
||||||
|
@ -56,6 +61,24 @@ impl<T> Vec2<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(geom)]
|
||||||
|
impl<T> Vec2<T> {
|
||||||
|
#[inline]
|
||||||
|
pub fn from_point(point: Point2<T>) -> Vec2<T> {
|
||||||
|
unsafe { cast::transmute(point) }
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn as_point<'a>(&'a self) -> &'a Point2<T> {
|
||||||
|
unsafe { cast::transmute(self) }
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn as_mut_point<'a>(&'a mut self) -> &'a mut Point2<T> {
|
||||||
|
unsafe { cast::transmute(self) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<T:Clone> Vec2<T> {
|
impl<T:Clone> Vec2<T> {
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn from_value(value: T) -> Vec2<T> {
|
pub fn from_value(value: T) -> Vec2<T> {
|
||||||
|
@ -561,6 +584,24 @@ impl<T> Vec3<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(geom)]
|
||||||
|
impl<T> Vec3<T> {
|
||||||
|
#[inline]
|
||||||
|
pub fn from_point(point: Point3<T>) -> Vec3<T> {
|
||||||
|
unsafe { cast::transmute(point) }
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn as_point<'a>(&'a self) -> &'a Point3<T> {
|
||||||
|
unsafe { cast::transmute(self) }
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
pub fn as_mut_point<'a>(&'a mut self) -> &'a mut Point3<T> {
|
||||||
|
unsafe { cast::transmute(self) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<T:Clone> Vec3<T> {
|
impl<T:Clone> Vec3<T> {
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn from_value(value: T) -> Vec3<T> {
|
pub fn from_value(value: T) -> Vec3<T> {
|
||||||
|
|
Loading…
Reference in a new issue