27 double projection[16];
28 glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
29 glGetDoublev(GL_PROJECTION_MATRIX, projection);
30 glGetIntegerv(GL_VIEWPORT, viewport);
33 glColor4f(0.0f, 0.0f, 0.0f, 0.001f);
36 glVertex3f(-100.0f, -100.0f, 0.0f);
38 gluProject(-100.0, -100.0, 0.00, modelview, projection, viewport,
39 &(
double){0}, &(double){0}, &wwinZ);
40 const double winX = x;
41 const double winY = (double)viewport[3] - y;
42 gluUnProject(winX, winY, wwinZ, modelview, projection, viewport, &posX,
56 double projection[16];
58 glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
59 glGetDoublev(GL_PROJECTION_MATRIX, projection);
60 glGetIntegerv(GL_VIEWPORT, viewport);
63 glColor4f(0.0f, 0.0f, 0.0f, 0.001f);
66 glVertex3f(10.0f, 10.0f, 1.0f);
68 gluProject(10.0, 10.0, 1.0, modelview, projection, viewport, &(
double){0},
69 &(double){0}, &wwinZ);
71 const double y = 50.0;
73 double winY = viewport[3] - y;
74 gluUnProject(winX, winY, wwinZ, modelview, projection, viewport, &posX,
75 &(
double){0}, &(double){0});
78 winY = viewport[3] - y;
79 gluUnProject(winX, winY, wwinZ, modelview, projection, viewport,
80 &posXX, &(
double){0}, &(double){0});
93void to3D(
int x,
int y,
float *
X,
float *
Y,
float *Z) {
98 double projection[16];
100 double posX, posY, posZ;
103 glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
104 glGetDoublev(GL_PROJECTION_MATRIX, projection);
105 glGetIntegerv(GL_VIEWPORT, viewport);
107 const double winX = x;
108 const double winY = (double)viewport[3] - y;
111 GL_DEPTH_COMPONENT, GL_FLOAT, &winZ);
112 float comp = -9999999;
114 if (winZ[idx] > comp && winZ[idx] < 1)
118 gluUnProject(winX, winY, comp, modelview, projection, viewport, &posX,
135 return p.
x * q.
x + p.
y * q.
y + p.
z * q.
z;
140 return sqrt(
dot(p, p));
147 r.
x = p.
x + m * (q.
x - p.
x);
148 r.
y = p.
y + m * (q.
y - p.
y);
149 r.
z = p.
z + m * (q.
z - p.
z);
171 U = (float) (
dot(pa, ba) /
dot(ba, ba));
196 borderWidth =
parent->borderWidth;
210 switch (child->
align) {
275 glVertex3f(p0.
x, p0.
y, p0.
z);
276 glVertex3f(p1.
x, p1.
y, p1.
z);
277 glVertex3f(p2.
x, p2.
y, p2.
z);
278 glVertex3f(p3.
x, p3.
y, p3.
z);
295 const float d = 0.01f;
296 float color_fac = 1.0f / 1.3f;
316 glColor4d(c.
R * color_fac *
dim, c.
G * color_fac *
dim,
317 c.
B * color_fac *
dim, c.
A);
321 glColor4d(c.
R / color_fac *
dim, c.
G / color_fac *
dim,
322 c.
B / color_fac *
dim, c.
A);
329 double rv = (
A.x -
B.x) * (
A.x -
B.x) + (
A.y -
B.y) * (
A.y -
B.y) + (
A.z -
B.z) * (
A.z -
B.z);
338 if (
X >= RX && X <= RX + RW && Y >= RY &&
Y <= RY + RH)
#define X(prefix, name, str, type, subtype,...)
void glCompDrawRectPrism(glCompPoint p, float w, float h, float b, glCompColor c, bool bumped)
static double len(glCompPoint p)
double GetOGLDistance(double l)
double distBetweenPts(glCompPoint A, glCompPoint B, double R)
void glCompDrawRectangle(glCompRect *r)
void glCompCalcWidget(glCompCommon *parent, glCompCommon *child, glCompCommon *ref)
int is_point_in_rectangle(float X, float Y, float RX, float RY, float RW, float RH)
static void glCompQuadVertex(glCompPoint p0, glCompPoint p1, glCompPoint p2, glCompPoint p3)
void GetOGLPosRef(int x, int y, float *X, float *Y)
static double dist(glCompPoint p, glCompPoint q)
void to3D(int x, int y, float *X, float *Y, float *Z)
double point_to_lineseg_dist(glCompPoint p, glCompPoint a, glCompPoint b)
static glCompPoint blend(glCompPoint p, glCompPoint q, float m)
void glCompSetColor(glCompColor c)