void Probe::probeTerrain(double latitude, double longitude, ProbeResult &result) { double xLocal; double yLocal; double zLocal; // TODO: Figure out what works for this const double altitudeMeters = 0; XPLMWorldToLocal(latitude, longitude, altitudeMeters, &xLocal, &yLocal, &zLocal); probeTerrain(xLocal, yLocal, zLocal, result); }
/// Draws waypoints. static int RouteDrawCallback(XPLMDrawingPhase inPhase, int inIsBefore, void * inRefcon) { float px = XPLMGetDataf(planeXref); float py = XPLMGetDataf(planeYref); float pz = XPLMGetDataf(planeZref); // Convert to local for (size_t i = 0; i < numWaypoints; ++i) { Waypoint* g = &waypoints[i]; LocalPoint* l = &localPoints[i]; XPLMWorldToLocal(g->latitude, g->longitude, g->altitude, &l->x, &l->y, &l->z); } // Draw posts glColor3f(1.0F, 1.0F, 1.0F); glBegin(GL_LINES); for (size_t i = 0; i < numWaypoints; ++i) { LocalPoint* l = &localPoints[i]; glVertex3f((float)l->x, (float)l->y, (float)l->z); glVertex3f((float)l->x, -1000.0F, (float)l->z); } glEnd(); // Draw route glColor3f(1.0F, 0.0F, 0.0F); glBegin(GL_LINE_STRIP); for (size_t i = 0; i < numWaypoints; ++i) { LocalPoint* l = &localPoints[i]; glVertex3f((float)l->x, (float)l->y, (float)l->z); } glEnd(); // Draw markers glColor3f(1.0F, 1.0F, 1.0F); for (size_t i = 0; i < numWaypoints; ++i) { LocalPoint* l = &localPoints[i]; float xoff = (float)l->x - px; float yoff = (float)l->y - py; float zoff = (float)l->z - pz; float d = sqrtf(xoff*xoff + yoff*yoff + zoff*zoff); gl_drawCube((float)l->x, (float)l->y, (float)l->z, d); } return 1; }