diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/RegistrationCPEventListener.java b/GUI/src/main/java/cz/fidentis/analyst/gui/RegistrationCPEventListener.java index c23d6018342da698f45d9b88e71e55b8f2511b3c..ca70058489ca36da5aa0d1041ab23a97fbf46767 100644 --- a/GUI/src/main/java/cz/fidentis/analyst/gui/RegistrationCPEventListener.java +++ b/GUI/src/main/java/cz/fidentis/analyst/gui/RegistrationCPEventListener.java @@ -107,4 +107,16 @@ public class RegistrationCPEventListener { public Color getDefaultSecondaryColor() { return defaultSecondaryColor; } + + public void resetTranslation() { + secondaryFace.resetTranslation(); + } + + public void resetRotation() { + secondaryFace.resetRotation(); + } + + public void resetScale() { + secondaryFace.resetScale(); + } } diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/scene/DrawableMesh.java b/GUI/src/main/java/cz/fidentis/analyst/gui/scene/DrawableMesh.java index 4b2895606a522fcecb56193d902e5ced7c8d7296..9faa2a24fdcc795cca20beae2b08dd8f6ac87ef0 100644 --- a/GUI/src/main/java/cz/fidentis/analyst/gui/scene/DrawableMesh.java +++ b/GUI/src/main/java/cz/fidentis/analyst/gui/scene/DrawableMesh.java @@ -4,6 +4,7 @@ import cz.fidentis.analyst.mesh.core.MeshFacet; import cz.fidentis.analyst.mesh.core.MeshModel; import java.awt.Color; import java.util.List; +import javax.vecmath.Vector3f; /** * A drawable triangular mesh, i.e., a mesh model with drawing information like @@ -21,6 +22,9 @@ public class DrawableMesh { // TO DO - R. Pajersky: add transformation attributes and methods private Color color = new Color(255, 255, 255); private float transparency = 1f; + private Vector3f translation = new Vector3f(0, 0, 0); + private Vector3f rotation = new Vector3f(0, 0, 0); + private Vector3f scale = new Vector3f(0, 0, 0); /** * Constructor. @@ -81,4 +85,76 @@ public class DrawableMesh { public void setTransparency(float transparency) { this.transparency = transparency; } + + public Vector3f getTranslation() { + return translation; + } + + public void setTranslation(Vector3f translation) { + this.translation = translation; + } + + public Vector3f getRotation() { + return rotation; + } + + public void setRotation(Vector3f rotation) { + this.rotation = rotation; + } + + public Vector3f getScale() { + return scale; + } + + public void setScale(Vector3f scale) { + this.scale = scale; + } + + /*public void increaseXTranslation(float value) { + this.translation.x = this.translation.x + value; + } + + public void increaseYTranslation(float value) { + this.translation.y = this.translation.y + value; + } + + public void increaseZTranslation(float value) { + this.translation.z = this.translation.z + value; + } + + public void increaseXRotation(float value) { + this.rotation.x = this.rotation.x + value; + } + + public void increaseYRotation(float value) { + this.rotation.y = this.rotation.y + value; + } + + public void increaseZRotation(float value) { + this.rotation.z = this.rotation.z + value; + } + + public void increaseXScale(float value) { + this.scale.x = this.scale.x + value; + } + + public void increaseYScale(float value) { + this.scale.y = this.scale.y + value; + } + + public void increaseZScale(float value) { + this.scale.z = this.scale.z + value; + }*/ + + public void resetTranslation() { + this.translation = new Vector3f(0, 0, 0); + } + + public void resetRotation() { + this.rotation = new Vector3f(0, 0, 0); + } + + public void resetScale() { + this.scale = new Vector3f(0, 0, 0); + } } diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/scene/SceneRenderer.java b/GUI/src/main/java/cz/fidentis/analyst/gui/scene/SceneRenderer.java index 93bdb55ea2bc8272f1a5d5440f7a13156f26c59a..3e048886446c22be7859f2c0ede70e4390fac9b3 100644 --- a/GUI/src/main/java/cz/fidentis/analyst/gui/scene/SceneRenderer.java +++ b/GUI/src/main/java/cz/fidentis/analyst/gui/scene/SceneRenderer.java @@ -142,7 +142,17 @@ public class SceneRenderer { for (MeshFacet facet: obj.getFacets()) { // TO DO - R. Pajersky: add transformation (glPushMatrix, glRotate, ...) + // rotate + gl.glPushMatrix(); + gl.glRotatef(obj.getRotation().x, 1f, 0f, 0f); + gl.glRotatef(obj.getRotation().y, 0f, 1f, 0f); + gl.glRotatef(obj.getRotation().z, 0f, 0f, 1f); + // move + gl.glTranslatef(obj.getTranslation().x, obj.getTranslation().y, obj.getTranslation().z); + // scale + gl.glScalef(obj.getScale().x, obj.getScale().y, obj.getScale().z); renderFacet(facet); + gl.glPopMatrix(); } } gl.glFlush(); diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.form b/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.form index 954b7ab4e3914482e9a9fb95d92c0aae48d78085..c6230ec493f2096cb13ca57ec65737a7e3c6f3d2 100644 --- a/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.form +++ b/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.form @@ -518,6 +518,9 @@ </Property> <Property name="opaque" type="boolean" value="false"/> </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="translationButtonActionPerformed"/> + </Events> </Component> <Component class="javax.swing.JButton" name="translationXButton"> <Properties> @@ -654,6 +657,9 @@ </Property> <Property name="opaque" type="boolean" value="false"/> </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="rotationButtonActionPerformed"/> + </Events> </Component> <Component class="javax.swing.JButton" name="scaleButton"> <Properties> @@ -672,6 +678,9 @@ </Property> <Property name="opaque" type="boolean" value="false"/> </Properties> + <Events> + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="scaleButtonActionPerformed"/> + </Events> </Component> <Component class="javax.swing.JButton" name="applyButton"> <Properties> diff --git a/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.java b/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.java index 172509e7840eced8b5f1869b6ffeaaec64f4e51d..5c45276bb969125acdfbd37720d3d9c9c0d6b583 100644 --- a/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.java +++ b/GUI/src/main/java/cz/fidentis/analyst/gui/tab/PostRegistrationCP.java @@ -210,6 +210,11 @@ public class PostRegistrationCP extends javax.swing.JPanel { translationButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); translationButton.setMargin(new java.awt.Insets(2, 2, 2, 2)); translationButton.setOpaque(false); + translationButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + translationButtonActionPerformed(evt); + } + }); org.openide.awt.Mnemonics.setLocalizedText(translationXButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.translationXButton.text")); // NOI18N translationXButton.setToolTipText(org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.translationXButton.toolTipText")); // NOI18N @@ -273,6 +278,11 @@ public class PostRegistrationCP extends javax.swing.JPanel { rotationButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); rotationButton.setMargin(new java.awt.Insets(2, 2, 2, 2)); rotationButton.setOpaque(false); + rotationButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + rotationButtonActionPerformed(evt); + } + }); org.openide.awt.Mnemonics.setLocalizedText(scaleButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.scaleButton.text")); // NOI18N scaleButton.setToolTipText(org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.scaleButton.toolTipText")); // NOI18N @@ -280,6 +290,11 @@ public class PostRegistrationCP extends javax.swing.JPanel { scaleButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); scaleButton.setMargin(new java.awt.Insets(2, 2, 2, 2)); scaleButton.setOpaque(false); + scaleButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + scaleButtonActionPerformed(evt); + } + }); org.openide.awt.Mnemonics.setLocalizedText(applyButton, org.openide.util.NbBundle.getMessage(PostRegistrationCP.class, "PostRegistrationCP.applyButton.text")); // NOI18N applyButton.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR)); @@ -704,6 +719,18 @@ public class PostRegistrationCP extends javax.swing.JPanel { listener.setSideFacing(); }//GEN-LAST:event_profileButtonActionPerformed + private void translationButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_translationButtonActionPerformed + listener.resetTranslation(); + }//GEN-LAST:event_translationButtonActionPerformed + + private void rotationButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rotationButtonActionPerformed + listener.resetRotation(); + }//GEN-LAST:event_rotationButtonActionPerformed + + private void scaleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_scaleButtonActionPerformed + listener.resetScale(); + }//GEN-LAST:event_scaleButtonActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton applyButton;