void Transform::rotateLocal(const float &amount, const glm::vec3 &axis) { rotation = rotation * glm::angleAxis(amount, axis); // Recalculate local axis calculateAxis(); }
void DRW_Trace::applyExtrusion(){ if (haveExtrusion) { calculateAxis(extPoint); extrudePoint(extPoint, &basePoint); extrudePoint(extPoint, &secPoint); extrudePoint(extPoint, &thirdPoint); extrudePoint(extPoint, &fourPoint); } }
void DRW_LWPolyline::applyExtrusion(){ if (haveExtrusion) { calculateAxis(extPoint); for (unsigned int i=0; i<vertlist.size(); i++) { DRW_Vertex2D *vert = vertlist.at(i); DRW_Coord v(vert->x, vert->y, elevation); extrudePoint(extPoint, &v); vert->x = v.x; vert->y = v.y; } } }
void Transform::rotateGlobal(const float &amount, const glm::vec3 &axis) { glm::quat rotationQuat = glm::normalize(glm::angleAxis(amount, axis)); glm::mat3 rotationMatrix = glm::mat3_cast(rotationQuat); // Rotate euler angles glm::quat q = rotationQuat; eulerAngles.x += RadToDegs(atan2(2.0f*(q.y*q.z + q.w*q.x), q.w*q.w - q.x*q.x - q.y*q.y + q.z*q.z)); eulerAngles.y += RadToDegs(asin(-2.0f*(q.x*q.z - q.w*q.y))); eulerAngles.z += RadToDegs(atan2(2.0f*(q.x*q.y + q.w*q.z), q.w*q.w + q.x*q.x - q.y*q.y - q.z*q.z)); // Rotate stored orientation rotation = rotationQuat * rotation; // Recalculate local axis calculateAxis(); }
void DRW_Circle::applyExtrusion(){ if (haveExtrusion) { calculateAxis(extPoint); extrudePoint(extPoint, &basePoint); } }