Fork me on GitHub

source: svn/trunk/Utilities/FROG/Includes/FROG/FROG_Primitives.cpp@ 308

Last change on this file since 308 was 95, checked in by severine ovyn, 16 years ago

first commit frog

File size: 3.8 KB
Line 
1#include "FROG_Primitives.h"
2
3void SetNormal(float C1X, float C1Y, float C1Z,
4 float C2X, float C2Y, float C2Z,
5 float C3X, float C3Y, float C3Z){
6
7 #ifdef FROG_LIGHTING
8 float X = (C1Y-C2Y)*(C2Z-C3Z) - (C1Z-C2Z)*(C2Y-C3Y);
9 float Y = (C1Z-C2Z)*(C2X-C3X) - (C1X-C2X)*(C2Z-C3Z);
10 float Z = (C1X-C2X)*(C2Y-C3Y) - (C1Y-C2Y)*(C2X-C3X);
11 float N = sqrt(X*X+Y*Y+Z*Z);
12 X /= N;Y /= N;Z /= N;
13
14 glNormal3f(X,Y,Z);
15 #endif
16}
17
18void DrawNormal(float C1X, float C1Y, float C1Z,
19 float C2X, float C2Y, float C2Z,
20 float C3X, float C3Y, float C3Z){
21/*
22 glBegin (GL_TRIANGLES);
23 glVertex3f (C1X,C1Y,C1Z);
24 glVertex3f (C2X,C2Y,C2Z);
25 glVertex3f (C3X,C3Y,C3Z);
26 glEnd();
27*/
28 float X = (C1Y-C2Y)*(C2Z-C3Z) - (C1Z-C2Z)*(C2Y-C3Y);
29 float Y = (C1Z-C2Z)*(C2X-C3X) - (C1X-C2X)*(C2Z-C3Z);
30 float Z = (C1X-C2X)*(C2Y-C3Y) - (C1Y-C2Y)*(C2X-C3X);
31 float N = sqrt(X*X+Y*Y+Z*Z);
32 N /= 25;
33 X /= N;Y /= N;Z /= N;
34
35 glColor3f(0,1,0);
36 glBegin (GL_LINES);
37 glVertex3f ((C1X+C2X+C3X)/3 ,(C1Y+C2Y+C3Y)/3 ,(C1Z+C2Z+C3Z)/3 ); //+++
38 glVertex3f ((C1X+C2X+C3X)/3+X,(C1Y+C2Y+C3Y)/3+Y,(C1Z+C2Z+C3Z)/3+Z); //+-+
39 glEnd();
40}
41
42void DrawCube(float C1X, float C1Y, float C1Z,
43 float C2X, float C2Y, float C2Z,
44 float C3X, float C3Y, float C3Z,
45 float C4X, float C4Y, float C4Z,
46 float C5X, float C5Y, float C5Z,
47 float C6X, float C6Y, float C6Z,
48 float C7X, float C7Y, float C7Z,
49 float C8X, float C8Y, float C8Z){
50
51 glBegin (GL_QUADS);
52 SetNormal(C1X,C1Y,C1Z,C4X,C4Y,C4Z,C3X,C3Y,C3Z);
53 glVertex3f (C1X,C1Y,C1Z); //+++
54 glVertex3f (C4X,C4Y,C4Z); //+-+
55 glVertex3f (C3X,C3Y,C3Z); //--+
56 glVertex3f (C2X,C2Y,C2Z); //-++
57
58 SetNormal(C5X,C5Y,C5Z,C6X,C6Y,C6Z,C7X,C7Y,C7Z);
59 glVertex3f (C5X,C5Y,C5Z); //++-
60 glVertex3f (C6X,C6Y,C6Z); //-+-
61 glVertex3f (C7X,C7Y,C7Z); //---
62 glVertex3f (C8X,C8Y,C8Z); //+--
63
64 SetNormal(C1X,C1Y,C1Z,C2X,C2Y,C2Z,C6X,C6Y,C6Z);
65 glVertex3f (C1X,C1Y,C1Z); //+++
66 glVertex3f (C2X,C2Y,C2Z); //-++
67 glVertex3f (C6X,C6Y,C6Z); //-+-
68 glVertex3f (C5X,C5Y,C5Z); //++-
69
70 SetNormal(C4X,C4Y,C4Z,C8X,C8Y,C8Z,C7X,C7Y,C7Z);
71 glVertex3f (C4X,C4Y,C4Z); //+-+
72 glVertex3f (C8X,C8Y,C8Z); //+--
73 glVertex3f (C7X,C7Y,C7Z); //---
74 glVertex3f (C3X,C3Y,C3Z); //--+
75
76 SetNormal(C1X,C1Y,C1Z,C5X,C5Y,C5Z,C8X,C8Y,C8Z);
77 glVertex3f (C1X,C1Y,C1Z); //+++
78 glVertex3f (C5X,C5Y,C5Z); //++-
79 glVertex3f (C8X,C8Y,C8Z); //+--
80 glVertex3f (C4X,C4Y,C4Z); //+-+
81
82 SetNormal(C2X,C2Y,C2Z,C3X,C3Y,C3Z,C7X,C7Y,C7Z);
83 glVertex3f (C2X,C2Y,C2Z); //-++
84 glVertex3f (C3X,C3Y,C3Z); //--+
85 glVertex3f (C7X,C7Y,C7Z); //---
86 glVertex3f (C6X,C6Y,C6Z); //-+-
87 glEnd();
88
89 /*
90 glEnable(GL_POLYGON_OFFSET_LINE);
91 glPolygonOffset(0,100);
92 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
93 glBegin (GL_QUADS);
94 SetNormal(C1X,C1Y,C1Z,C4X,C4Y,C4Z,C3X,C3Y,C3Z);
95 glVertex3f (C1X,C1Y,C1Z); //+++
96 glVertex3f (C4X,C4Y,C4Z); //+-+
97 glVertex3f (C3X,C3Y,C3Z); //--+
98 glVertex3f (C2X,C2Y,C2Z); //-++
99
100 SetNormal(C5X,C5Y,C5Z,C6X,C6Y,C6Z,C7X,C7Y,C7Z);
101 glVertex3f (C5X,C5Y,C5Z); //++-
102 glVertex3f (C6X,C6Y,C6Z); //-+-
103 glVertex3f (C7X,C7Y,C7Z); //---
104 glVertex3f (C8X,C8Y,C8Z); //+--
105
106 SetNormal(C1X,C1Y,C1Z,C2X,C2Y,C2Z,C6X,C6Y,C6Z);
107 glVertex3f (C1X,C1Y,C1Z); //+++
108 glVertex3f (C2X,C2Y,C2Z); //-++
109 glVertex3f (C6X,C6Y,C6Z); //-+-
110 glVertex3f (C5X,C5Y,C5Z); //++-
111
112 SetNormal(C4X,C4Y,C4Z,C8X,C8Y,C8Z,C7X,C7Y,C7Z);
113 glVertex3f (C4X,C4Y,C4Z); //+-+
114 glVertex3f (C8X,C8Y,C8Z); //+--
115 glVertex3f (C7X,C7Y,C7Z); //---
116 glVertex3f (C3X,C3Y,C3Z); //--+
117
118 SetNormal(C1X,C1Y,C1Z,C5X,C5Y,C5Z,C8X,C8Y,C8Z);
119 glVertex3f (C1X,C1Y,C1Z); //+++
120 glVertex3f (C5X,C5Y,C5Z); //++-
121 glVertex3f (C8X,C8Y,C8Z); //+--
122 glVertex3f (C4X,C4Y,C4Z); //+-+
123
124 SetNormal(C2X,C2Y,C2Z,C3X,C3Y,C3Z,C7X,C7Y,C7Z);
125 glVertex3f (C2X,C2Y,C2Z); //-++
126 glVertex3f (C3X,C3Y,C3Z); //--+
127 glVertex3f (C7X,C7Y,C7Z); //---
128 glVertex3f (C6X,C6Y,C6Z); //-+-
129 glEnd();
130 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
131 */
132}
133
Note: See TracBrowser for help on using the repository browser.