/* SPDX-License-Identifier: LGPL-2.1-only */ /* * The Rin Library – floating point module * * Copyright (C) 2015 Gediminas Jakutis */ #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; }; float arr[2]; }; }; 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; }; float arr[3]; }; }; 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; }; float arr[4]; }; }; struct rin_vec2d { union { struct { double x; double y; }; struct { double r; double g; }; struct { double s; double t; }; double arr[2]; }; }; 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; }; double arr[3]; }; }; 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; }; double arr[4]; }; }; /* A simple 3D vertex with position and normal data. */ struct vertex { struct rin_vec3 position; struct rin_vec3 normal; }; #endif /* LIBRIN_FLOAT_TYPES_INCLUDED */