All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jme3.scene.plugins.blender.math.DTransform Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2009-2012 jMonkeyEngine
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 * * Redistributions of source code must retain the above copyright
 *   notice, this list of conditions and the following disclaimer.
 *
 * * Redistributions in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in the
 *   documentation and/or other materials provided with the distribution.
 *
 * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
 *   may be used to endorse or promote products derived from this software
 *   without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package com.jme3.scene.plugins.blender.math;

import java.io.IOException;

import com.jme3.export.InputCapsule;
import com.jme3.export.JmeExporter;
import com.jme3.export.JmeImporter;
import com.jme3.export.OutputCapsule;
import com.jme3.export.Savable;
import com.jme3.math.Transform;

/**
 * Started Date: Jul 16, 2004
*
* Represents a translation, rotation and scale in one object. * * This class's only purpose is to give better accuracy in floating point operations during computations. * This is made by copying the original Transfrom class from jme3 core and removing unnecessary methods so that * the class is smaller and easier to maintain. * Should any other methods be needed, they will be added. * * @author Jack Lindamood * @author Joshua Slack * @author Marcin Roguski (Kaelthas) */ public final class DTransform implements Savable, Cloneable, java.io.Serializable { private static final long serialVersionUID = 7812915425940606722L; private DQuaternion rotation; private Vector3d translation; private Vector3d scale; public DTransform() { translation = new Vector3d(); rotation = new DQuaternion(); scale = new Vector3d(); } public DTransform(Transform transform) { translation = new Vector3d(transform.getTranslation()); rotation = new DQuaternion(transform.getRotation()); scale = new Vector3d(transform.getScale()); } public Transform toTransform() { return new Transform(translation.toVector3f(), rotation.toQuaternion(), scale.toVector3f()); } public Matrix toMatrix() { Matrix m = Matrix.identity(4); m.setTranslation(translation); m.setRotationQuaternion(rotation); m.setScale(scale); return m; } /** * Sets this translation to the given value. * @param trans * The new translation for this matrix. * @return this */ public DTransform setTranslation(Vector3d trans) { translation.set(trans); return this; } /** * Sets this rotation to the given DQuaternion value. * @param rot * The new rotation for this matrix. * @return this */ public DTransform setRotation(DQuaternion rot) { rotation.set(rot); return this; } /** * Sets this scale to the given value. * @param scale * The new scale for this matrix. * @return this */ public DTransform setScale(Vector3d scale) { this.scale.set(scale); return this; } /** * Sets this scale to the given value. * @param scale * The new scale for this matrix. * @return this */ public DTransform setScale(float scale) { this.scale.set(scale, scale, scale); return this; } /** * Return the translation vector in this matrix. * @return translation vector. */ public Vector3d getTranslation() { return translation; } /** * Return the rotation quaternion in this matrix. * @return rotation quaternion. */ public DQuaternion getRotation() { return rotation; } /** * Return the scale vector in this matrix. * @return scale vector. */ public Vector3d getScale() { return scale; } @Override public String toString() { return this.getClass().getSimpleName() + "[ " + translation.x + ", " + translation.y + ", " + translation.z + "]\n" + "[ " + rotation.x + ", " + rotation.y + ", " + rotation.z + ", " + rotation.w + "]\n" + "[ " + scale.x + " , " + scale.y + ", " + scale.z + "]"; } public void write(JmeExporter e) throws IOException { OutputCapsule capsule = e.getCapsule(this); capsule.write(rotation, "rot", new DQuaternion()); capsule.write(translation, "translation", Vector3d.ZERO); capsule.write(scale, "scale", Vector3d.UNIT_XYZ); } public void read(JmeImporter e) throws IOException { InputCapsule capsule = e.getCapsule(this); rotation = (DQuaternion) capsule.readSavable("rot", new DQuaternion()); translation = (Vector3d) capsule.readSavable("translation", Vector3d.ZERO); scale = (Vector3d) capsule.readSavable("scale", Vector3d.UNIT_XYZ); } @Override public DTransform clone() { try { DTransform tq = (DTransform) super.clone(); tq.rotation = rotation.clone(); tq.scale = scale.clone(); tq.translation = translation.clone(); return tq; } catch (CloneNotSupportedException e) { throw new AssertionError(); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy