Blame | Last modification | View Log | RSS feed
/*** Marlin 3D Printer Firmware* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]** Based on Sprinter and grbl.* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm** This program is free software: you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation, either version 3 of the License, or* (at your option) any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU General Public License for more details.** You should have received a copy of the GNU General Public License* along with this program. If not, see <http://www.gnu.org/licenses/>.**//**vector_3.cpp - Vector library for bed levelingCopyright (c) 2012 Lars Brubaker. All right reserved.This library is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense as published by the Free Software Foundation; eitherversion 2.1 of the License, or (at your option) any later version.This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNULesser General Public License for more details.You should have received a copy of the GNU Lesser General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA*/#ifndef VECTOR_3_H#define VECTOR_3_Hclass matrix_3x3;struct vector_3 {float x, y, z;vector_3();vector_3(float x, float y, float z);static vector_3 cross(vector_3 a, vector_3 b);vector_3 operator+(vector_3 v);vector_3 operator-(vector_3 v);void normalize();float get_length();vector_3 get_normal();void debug(const char * const title);void apply_rotation(matrix_3x3 matrix);};struct matrix_3x3 {float matrix[9];static matrix_3x3 create_from_rows(vector_3 row_0, vector_3 row_1, vector_3 row_2);static matrix_3x3 create_look_at(vector_3 target);static matrix_3x3 transpose(matrix_3x3 original);void set_to_identity();void debug(const char * const title);};void apply_rotation_xyz(matrix_3x3 rotationMatrix, float &x, float &y, float &z);#endif // VECTOR_3_H