51 lines
1.5 KiB
C
51 lines
1.5 KiB
C
/**
|
|
* Copyright (c) 2026 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#pragma once
|
|
#include "display/mesh/mesh.h"
|
|
#include "display/color.h"
|
|
|
|
#define TRIPRISM_VERTEX_COUNT 24
|
|
#define TRIPRISM_PRIMITIVE_TYPE MESH_PRIMITIVE_TYPE_TRIANGLES
|
|
|
|
extern mesh_t TRIPRISM_MESH_SIMPLE;
|
|
extern meshvertex_t TRIPRISM_MESH_SIMPLE_VERTICES[TRIPRISM_VERTEX_COUNT];
|
|
|
|
/**
|
|
* Initializes the simple unit triangular prism. The cross-section triangle has
|
|
* vertices (0,0), (1,0), (0.5,1) in XY, extruded from z=0 to z=1.
|
|
*
|
|
* @return Error for initialization of the triangular prism mesh.
|
|
*/
|
|
errorret_t triPrismInit();
|
|
|
|
/**
|
|
* Buffers a triangular prism into the provided vertex array.
|
|
* The triangular cross-section is defined by three 2D points in the XY plane;
|
|
* the prism is extruded along the Z axis between minZ and maxZ.
|
|
* Writes TRIPRISM_VERTEX_COUNT (24) vertices (CCW winding).
|
|
*
|
|
* @param vertices Vertex array to write into.
|
|
* @param x0,y0 First triangle vertex (XY).
|
|
* @param x1,y1 Second triangle vertex (XY).
|
|
* @param x2,y2 Third triangle vertex (XY).
|
|
* @param minZ Near Z extent of the prism.
|
|
* @param maxZ Far Z extent of the prism.
|
|
* @param color Color applied to all vertices.
|
|
*/
|
|
void triPrismBuffer(
|
|
meshvertex_t *vertices,
|
|
const float_t x0, const float_t y0,
|
|
const float_t x1, const float_t y1,
|
|
const float_t x2, const float_t y2,
|
|
const float_t minZ,
|
|
const float_t maxZ
|
|
#if MESH_ENABLE_COLOR
|
|
, const color_t color
|
|
#endif
|
|
);
|