/* * The Rin Library – floating point module * * Copyright (C) 2015 Gediminas Jakutis * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2.1 * of the License. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef LIBRIN_FLOAT_TYPES_INCLUDED #define LIBRIN_FLOAT_TYPES_INCLUDED /* These rin_vec[num] types mostly mimic the analogous types found in OpenGL * with other existing libraries get noticed. * * rin_vecd[num] use double instead of float, but are otherwise identical to rin_vec[num]. */ struct rin_vec2 { union { struct { float x; float y; }; struct { float r; float g; }; struct { float s; float t; }; }; }; struct rin_vec3 { union { struct { float x; float y; float z; }; struct { float r; float g; float b; }; struct { float s; float t; float p; }; }; }; struct rin_vec4 { union { struct { float x; float y; float z; float w; }; struct { float r; float g; float b; float a; }; struct { float s; float t; float p; float q; }; }; }; struct rin_vec2d { union { struct { double x; double y; }; struct { double r; double g; }; struct { double s; double t; }; }; }; struct rin_vec3d { union { struct { double x; double y; double z; }; struct { double r; double g; double b; }; struct { double s; double t; double p; }; }; }; struct rin_vec4d { union { struct { double x; double y; double z; double w; }; struct { double r; double g; double b; double a; }; struct { double s; double t; double p; double q; }; }; }; /* A simple 3D vertex with position and normal data. */ struct vertex { struct rin_vec3 position; struct rin_vec3 normal; }; #endif /* LIBRIN_FLOAT_TYPES_INCLUDED */