mirror of
https://git.coom.tech/drummyfish/small3dlib.git
synced 2024-11-21 20:39:57 +01:00
Small refactor
This commit is contained in:
parent
28ce385dad
commit
35197f03d6
2 changed files with 13 additions and 8 deletions
14
s3l.h
14
s3l.h
|
@ -65,13 +65,12 @@ typedef struct
|
||||||
int16_t minorIncrement;
|
int16_t minorIncrement;
|
||||||
int16_t majorDiff;
|
int16_t majorDiff;
|
||||||
int16_t minorDiff;
|
int16_t minorDiff;
|
||||||
} S3L_BresenhamState;
|
} S3L_BresenhamState; ///< State of drawing a line with Bresenham algorithm.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Returns a value interpolated between the three triangle vertices based on
|
Returns a value interpolated between the three triangle vertices based on
|
||||||
barycentric coordinates.
|
barycentric coordinates.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline S3L_Unit S3L_interpolateBarycentric(
|
static inline S3L_Unit S3L_interpolateBarycentric(
|
||||||
S3L_Unit value0, S3L_Unit value1, S3L_Unit value2,
|
S3L_Unit value0, S3L_Unit value1, S3L_Unit value2,
|
||||||
S3L_Unit barycentric0, S3L_Unit barycentric1, S3L_Unit barycentric2)
|
S3L_Unit barycentric0, S3L_Unit barycentric1, S3L_Unit barycentric2)
|
||||||
|
@ -84,7 +83,7 @@ static inline S3L_Unit S3L_interpolateBarycentric(
|
||||||
) / S3L_FRACTIONS_PER_UNIT;
|
) / S3L_FRACTIONS_PER_UNIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
// general helper functions:
|
// general helper functions
|
||||||
|
|
||||||
static inline int16_t S3L_abs(int16_t value)
|
static inline int16_t S3L_abs(int16_t value)
|
||||||
{
|
{
|
||||||
|
@ -115,7 +114,6 @@ static inline S3L_Unit S3L_nonZero(S3L_Unit value)
|
||||||
Interpolated between two values, v1 and v2, in the same ratio as t is to
|
Interpolated between two values, v1 and v2, in the same ratio as t is to
|
||||||
tMax. Does NOT prevent zero division.
|
tMax. Does NOT prevent zero division.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline int16_t S3L_interpolate(int16_t v1, int16_t v2, int16_t t,
|
static inline int16_t S3L_interpolate(int16_t v1, int16_t v2, int16_t t,
|
||||||
int16_t tMax)
|
int16_t tMax)
|
||||||
{
|
{
|
||||||
|
@ -125,7 +123,6 @@ static inline int16_t S3L_interpolate(int16_t v1, int16_t v2, int16_t t,
|
||||||
/**
|
/**
|
||||||
Same as S3L_interpolate but with v1 = 0. Should be faster.
|
Same as S3L_interpolate but with v1 = 0. Should be faster.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline int16_t S3L_interpolateFrom0(int16_t v2, int16_t t, int16_t tMax)
|
static inline int16_t S3L_interpolateFrom0(int16_t v2, int16_t t, int16_t tMax)
|
||||||
{
|
{
|
||||||
return (v2 * t) / tMax;
|
return (v2 * t) / tMax;
|
||||||
|
@ -190,8 +187,11 @@ int S3L_bresenhamStep(S3L_BresenhamState *state)
|
||||||
return state->steps >= 0;
|
return state->steps >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void S3L_drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
|
void S3L_drawTriangle(
|
||||||
int16_t x2, int16_t y2, S3L_DrawConfig config)
|
S3L_ScreenCoord x0, S3L_ScreenCoord y0,
|
||||||
|
S3L_ScreenCoord x1, S3L_ScreenCoord y1,
|
||||||
|
S3L_ScreenCoord x2, S3L_ScreenCoord y2,
|
||||||
|
S3L_DrawConfig config)
|
||||||
{
|
{
|
||||||
if (config.backfaceCulling != S3L_BACKFACE_CULLING_NONE)
|
if (config.backfaceCulling != S3L_BACKFACE_CULLING_NONE)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
/*
|
||||||
|
author: Miloslav Ciz
|
||||||
|
license: CC0
|
||||||
|
*/
|
||||||
|
|
||||||
#include <SDL2/SDL.h>
|
#include <SDL2/SDL.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
Loading…
Reference in a new issue