Tachyon (current)  Current Main Branch
triangle.h
Go to the documentation of this file.
1 /*
2  * triangle.h - This file contains the defines for triangles etc.
3  *
4  * (C) Copyright 1994-2022 John E. Stone
5  * SPDX-License-Identifier: BSD-3-Clause
6  *
7  * $Id: triangle.h,v 1.22 2022/02/18 17:55:28 johns Exp $
8  *
9  */
10 
11 object * newtri(void *, vector, vector, vector);
12 object * newstri(void *, vector, vector, vector, vector, vector, vector);
13 void stri_normal_fixup(object *, int mode);
14 object * newvcstri(void *, vector, vector, vector, vector, vector, vector,
15  color, color, color);
16 void vcstri_normal_fixup(object *, int mode);
17 color vcstri_color(const vector * hit, const texture * tex, const ray * incident);
18 
19 #ifdef TRIANGLE_PRIVATE
20 
21 #define TRIXMAJOR 0
22 #define TRIYMAJOR 1
23 #define TRIZMAJOR 2
24 
25 typedef struct {
26  RT_OBJECT_HEAD
27  vector edge2;
28  vector edge1;
29  vector v0;
30 } tri;
31 
32 typedef struct {
33  RT_OBJECT_HEAD
34  vector edge2;
35  vector edge1;
36  vector v0;
37  vector n0;
38  vector n1;
39  vector n2;
40 } stri;
41 
42 typedef struct {
43  RT_OBJECT_HEAD
44  vector edge2;
45  vector edge1;
46  vector v0;
47  vector n0;
48  vector n1;
49  vector n2;
50  color c0;
51  color c1;
52  color c2;
53 } vcstri;
54 
55 static int tri_bbox(void * obj, vector * min, vector * max);
56 
57 static void tri_intersect(const tri *, ray *);
58 
59 static void tri_normal(const tri *, const vector *, const ray *, vector *);
60 static void stri_normal(const stri *, const vector *, const ray *, vector *);
61 static void stri_normal_reverse(const stri *, const vector *, const ray *, vector *);
62 static void stri_normal_guess(const stri *, const vector *, const ray *, vector *);
63 
64 #endif
65 
66 
void stri_normal_fixup(object *, int mode)
Definition: triangle.c:118
static void stri_normal_guess(const stri *trn, const vector *hit, const ray *incident, vector *N)
Definition: triangle.c:428
static void stri_normal(const stri *trn, const vector *hit, const ray *incident, vector *N)
Definition: triangle.c:321
object * newtri(void *, vector, vector, vector)
Definition: triangle.c:54
object * newstri(void *, vector, vector, vector, vector, vector, vector)
Definition: triangle.c:84
static void tri_normal(const tri *trn, const vector *hit, const ray *incident, vector *N)
Definition: triangle.c:302
void vcstri_normal_fixup(object *, int mode)
Definition: triangle.c:183
static void stri_normal_reverse(const stri *trn, const vector *hit, const ray *incident, vector *N)
Definition: triangle.c:388
static void tri_intersect(const tri *trn, ray *ry)
Definition: triangle.c:236
object * newvcstri(void *, vector, vector, vector, vector, vector, vector, color, color, color)
Definition: triangle.c:141
color vcstri_color(const vector *hit, const texture *tex, const ray *incident)
Definition: triangle.c:360
static int tri_bbox(void *obj, vector *min, vector *max)
Definition: triangle.c:218