<- back
🐄 (🐌 variants)
// single color void basic_draw( int primitive, mat4 transform, int num_vertices, vecX *vertex_positions, vec3 color = V3(1, 1, 1), double size_in_pixels = 0, bool overlay = false, vec3 wireframe_color = V3(1, 1, 1)); // per-vertex color void basic_draw( int primitive, mat4 transform, int num_vertices, vecX *vertex_positions, vec3 *vertex_colors, double size_in_pixels = 0, bool overlay = false, vec3 wireframe_color = V3(1, 1, 1));
🐌 note: vecX is e.g. a vec2 or a vec3
"constructors" vec2 V2(double x, double y); vec3 V3(double x, double y, double z); vec4 V4(double x, double y, double z, double w); vec4 V4(vec3 xyz, double w); mat2 M2(double m00, double m01, double m10, double m11); mat3 M3(double m00, double m01, double m02, double m10, double m11, double m12, double m20, double m21, double m22); mat4 M4(double m00, double m01, double m02, double m03, double m10, double m11, double m12, double m13, double m20, double m21, double m22, double m23, double m30, double m31, double m32, double m33); operators double dot(vecX u, vecX, v); // u dot v vec3 cross(vec3 u, vec3 v); // u cross v double squaredNorm(vecX v); // |v|^2 double norm(vecX v); // |v| vecX normalized(vecX v); // v / |v| vecX cwiseAbs(vecX v); vecX cwiseMin(vecX v); vecX cwiseMax(vecX v); vecX cwiseProduct(vecX u, vecX v); double determinant(matX M); matX inverse(matX M); matX transpose(matX M); 4x4 transforms mat4 Translation(double x, double y, double z = 0); mat4 Translation(vec2 xy); mat4 Translation(vec3 xyz); mat4 Scaling(double x, double y, double z = 1); mat4 Scaling(vec2 xy); mat4 Scaling(vec3 xyz); mat4 RotationX(double theta); mat4 RotationY(double theta); mat4 RotationZ(double theta); mat4 Rotation(vec3 axis, double angle); vecX transformPoint (mat4 M, vecX p); // M * [p, 1] vecX transformVector(mat4 M, vecX v); // M * [v, 0] vecX transformNormal(mat4 M, vecX n); // inverse(transpose(M)) * [n, 0] utility mat4 xyzo2mat4(vec3 x, vec3 y, vec3 z, vec3 o); // [ x y z o ] // [ 0 0 0 1 ] void pprint(vecX v); void pprint(matX v);