From 37b7a4a1453ec5730e3f299195a25f15b1c77ebb Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Fri, 12 Feb 2016 14:54:23 +0100 Subject: [PATCH 1/2] Fixed Scene_plane_item::setNormal --- Polyhedron/demo/Polyhedron/Scene_plane_item.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/Scene_plane_item.h b/Polyhedron/demo/Polyhedron/Scene_plane_item.h index d7e07bfb1fb..26e806c1d1f 100644 --- a/Polyhedron/demo/Polyhedron/Scene_plane_item.h +++ b/Polyhedron/demo/Polyhedron/Scene_plane_item.h @@ -133,11 +133,19 @@ public Q_SLOTS: } void setNormal(float x, float y, float z) { - frame->setOrientation(x, y, z, 0.f); + QVector3D normal(x,y,z); + QVector3D origin(0,0,1); + QQuaternion q(CGAL::sqrt((normal.lengthSquared()) * (origin.lengthSquared())) + QVector3D::dotProduct(origin, normal),QVector3D::crossProduct(origin, normal)); + q.normalize(); + frame->setOrientation(q.x(), q.y(), q.z(), q.scalar()); } void setNormal(double x, double y, double z) { - frame->setOrientation((float)x, (float)y, (float)z, 0.f); + QVector3D normal(x,y,z); + QVector3D origin(0,0,1); + QQuaternion q(CGAL::sqrt((normal.lengthSquared()) * (origin.lengthSquared())) + QVector3D::dotProduct(origin, normal),QVector3D::crossProduct(origin, normal)); + q.normalize(); + frame->setOrientation(q.x(), q.y(), q.z(), q.scalar()); } void setClonable(bool b = true) { From a443cb4c064b2d0288e079bc235cf93933549009 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Fri, 12 Feb 2016 15:07:18 +0100 Subject: [PATCH 2/2] clean-up --- Polyhedron/demo/Polyhedron/Scene_plane_item.h | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/Scene_plane_item.h b/Polyhedron/demo/Polyhedron/Scene_plane_item.h index 26e806c1d1f..ab08af0c789 100644 --- a/Polyhedron/demo/Polyhedron/Scene_plane_item.h +++ b/Polyhedron/demo/Polyhedron/Scene_plane_item.h @@ -141,11 +141,7 @@ public Q_SLOTS: } void setNormal(double x, double y, double z) { - QVector3D normal(x,y,z); - QVector3D origin(0,0,1); - QQuaternion q(CGAL::sqrt((normal.lengthSquared()) * (origin.lengthSquared())) + QVector3D::dotProduct(origin, normal),QVector3D::crossProduct(origin, normal)); - q.normalize(); - frame->setOrientation(q.x(), q.y(), q.z(), q.scalar()); + setNormal((float)x, (float)y, (float)z); } void setClonable(bool b = true) {