25 double projection[16];
26 glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
27 glGetDoublev(GL_PROJECTION_MATRIX, projection);
28 glGetIntegerv(GL_VIEWPORT, viewport);
31 glColor4f(0.0f, 0.0f, 0.0f, 0.001f);
34 glVertex3f(-100.0f, -100.0f, 0.0f);
36 gluProject(-100.0, -100.0, 0.00, modelview, projection, viewport,
37 &(
double){0}, &(double){0}, &wwinZ);
38 const double winX = x;
39 const double winY = (double)viewport[3] - y;
40 gluUnProject(winX, winY, wwinZ, modelview, projection, viewport, &posX,
54 double projection[16];
56 glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
57 glGetDoublev(GL_PROJECTION_MATRIX, projection);
58 glGetIntegerv(GL_VIEWPORT, viewport);
61 glColor4f(0.0f, 0.0f, 0.0f, 0.001f);
64 glVertex3f(10.0f, 10.0f, 1.0f);
66 gluProject(10.0, 10.0, 1.0, modelview, projection, viewport, &(
double){0},
67 &(double){0}, &wwinZ);
69 const double y = 50.0;
71 double winY = viewport[3] - y;
72 gluUnProject(winX, winY, wwinZ, modelview, projection, viewport, &posX,
73 &(
double){0}, &(double){0});
76 winY = viewport[3] - y;
77 gluUnProject(winX, winY, wwinZ, modelview, projection, viewport,
78 &posXX, &(
double){0}, &(double){0});
91void to3D(
int x,
int y,
float *
X,
float *
Y,
float *Z) {
96 double projection[16];
98 double posX, posY, posZ;
101 glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
102 glGetDoublev(GL_PROJECTION_MATRIX, projection);
103 glGetIntegerv(GL_VIEWPORT, viewport);
105 const double winX = x;
106 const double winY = (double)viewport[3] - y;
109 GL_DEPTH_COMPONENT, GL_FLOAT, &winZ);
110 float comp = -9999999;
112 if (winZ[idx] > comp && winZ[idx] < 1)
116 gluUnProject(winX, winY, comp, modelview, projection, viewport, &posX,
133 return p.
x * q.
x + p.
y * q.
y + p.
z * q.
z;
138 return sqrt(
dot(p, p));
145 r.
x = p.
x + m * (q.
x - p.
x);
146 r.
y = p.
y + m * (q.
y - p.
y);
147 r.
z = p.
z + m * (q.
z - p.
z);
169 U = (float) (
dot(pa, ba) /
dot(ba, ba));
194 borderWidth =
parent->borderWidth;
208 switch (child->
align) {
273 glVertex3f(p0.
x, p0.
y, p0.
z);
274 glVertex3f(p1.
x, p1.
y, p1.
z);
275 glVertex3f(p2.
x, p2.
y, p2.
z);
276 glVertex3f(p3.
x, p3.
y, p3.
z);
293 const float d = 0.01f;
294 float color_fac = 1.0f / 1.3f;
314 glColor4d(c.
R * color_fac *
dim, c.
G * color_fac *
dim,
315 c.
B * color_fac *
dim, c.
A);
319 glColor4d(c.
R / color_fac *
dim, c.
G / color_fac *
dim,
320 c.
B / color_fac *
dim, c.
A);
327 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);
336 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)