78{
79 const int SUBDIV = 7;
82
83 const float A[8*3] = { 1,0,0, 0,0,-1, -1,0,0, 0,0,1, 0,0,1, 1,0,0, 0,0,-1, -1,0,0 };
84 const float B[8*3] = { 0,1,0, 0,1,0, 0,1,0, 0,1,0, 0,-1,0, 0,-1,0, 0,-1,0, 0,-1,0 };
85 const float C[8*3] = { 0,0,1, 1,0,0, 0,0,-1, -1,0,0, 1,0,0, 0,0,-1, -1,0,0, 0,0,1 };
86
87
88
89 const color32 COL_A[8] = { 0xffffffff, 0xffffff40, 0xff40ff40, 0xff40ffff, 0xffff40ff, 0xffff4040, 0xff404040, 0xff4040ff };
90 const color32 COL_B[8] = { 0xffffffff, 0xffffff40, 0xff40ff40, 0xff40ffff, 0xffff40ff, 0xffff4040, 0xff404040, 0xff4040ff };
91 const color32 COL_C[8] = { 0xffffffff, 0xffffff40, 0xff40ff40, 0xff40ffff, 0xffff40ff, 0xffff4040, 0xff404040, 0xff4040ff };
92
93 int i, j, k, l;
94 float xa, ya, za, xb, yb, zb, xc, yc, zc,
x,
y, z, norm, u[3], v[3];
96 for( i=0; i<8; ++i )
97 {
98 xa = A[3*i+0]; ya = A[3*i+1]; za = A[3*i+2];
99 xb = B[3*i+0]; yb = B[3*i+1]; zb = B[3*i+2];
100 xc = C[3*i+0]; yc = C[3*i+1]; zc = C[3*i+2];
101 for( j=0; j<=SUBDIV; ++j )
102 for( k=0; k<=2*(SUBDIV-j); ++k )
103 {
104 if( k%2==0 )
105 {
106 u[0] = ((float)j)/(SUBDIV+1);
107 v[0] = ((float)(k/2))/(SUBDIV+1);
108 u[1] = ((float)(j+1))/(SUBDIV+1);
109 v[1] = ((float)(k/2))/(SUBDIV+1);
110 u[2] = ((float)j)/(SUBDIV+1);
111 v[2] = ((float)(k/2+1))/(SUBDIV+1);
112 }
113 else
114 {
115 u[0] = ((float)j)/(SUBDIV+1);
116 v[0] = ((float)(k/2+1))/(SUBDIV+1);
117 u[1] = ((float)(j+1))/(SUBDIV+1);
118 v[1] = ((float)(k/2))/(SUBDIV+1);
119 u[2] = ((float)(j+1))/(SUBDIV+1);
120 v[2] = ((float)(k/2+1))/(SUBDIV+1);
121 }
122
123 for( l=0; l<3; ++l )
124 {
125 x = (1.0f-u[l]-v[l])*xa + u[l]*xb + v[l]*xc;
126 y = (1.0f-u[l]-v[l])*ya + u[l]*yb + v[l]*yc;
127 z = (1.0f-u[l]-v[l])*za + u[l]*zb + v[l]*zc;
128 norm = sqrtf(x*x+y*y+z*z);
129 x /= norm;
y /= norm; z /= norm;
132 if( u[l]+v[l]>FLOAT_EPS )
134 else
136
137
139 }
140 }
141 }
142
143
144
145
146}
EIGEN_DEVICE_FUNC ColXpr col(Index i)
This is the const version of col().
Definition BlockMethods.h:838
static color32 ColorBlend(color32 Color1, color32 Color2, float S)
Definition draw_beach_ball.cpp:66
static std::vector< color32 > s_SphCol
Definition draw_beach_ball.cpp:76
static std::vector< float > s_SphTri
Definition draw_beach_ball.cpp:75
const Scalar & y
Definition MathFunctions.h:552
const float FLOAT_EPS
Definition EPS.h:16
TCoord< P > x(const P &p)
Definition geometry_traits.hpp:297