Was müssen Sie in der Lage ist zu tun, um Ihre Daten des (x, y) Koordinaten in Bildschirmkoordinaten zu transformieren. Die einfachste Art und Weise, dies zu tun, ist nicht auf OpenGL oder GLUT angewiesen. Alles, was Sie tun müssen, ist ein bisschen Mathe. Ermitteln Sie die Bildschirmkoordinaten (x, y) des Ortes, an dem ein Datenpunkt für (0,0) auf dem Bildschirm angezeigt werden soll, und bestimmen Sie dann, wie weit ein Inkrement auf dem Bildschirm auseinander liegen soll. Nehmen Sie einfach Ihre ursprünglichen Datenpunkte, wenden Sie den Offset an und skalieren Sie sie dann, um Ihre Bildschirmkoordinaten zu erhalten, die Sie dann an glVertex2f()
übergeben (oder an die Funktion, die Sie verwenden, um Punkte in Ihrer API anzugeben).
Sie können beispielsweise festlegen, dass der Punkt (0,0) in Ihren Daten auf dem Bildschirm (200,0) und der Abstand zwischen 0 und 1 in Ihren Daten 30 Pixel beträgt Bildschirm. Dieser Vorgang wird wie folgt aussehen:
int x = 0, y = 0; //Original data points
int scaleX = 30, scaleY = 30; //Scaling values for each component
int offsetX = 100, offsetY = 100; //Where you want the origin of your graph to be
// Apply the scaling values and offsets:
int screenX = x * scaleX + offsetX;
int screenY = y * scaleY + offsetY;
// Calls to your drawing functions using screenX and screenY as your coordinates
Sie müssen Werte bestimmen, den Sinn für das scalaing und Offsets zu machen. Sie können auch unterschiedliche Werte für verschiedene Datensätze verwenden, um mehrere Grafiken auf demselben Bildschirm anzuzeigen. Aber das ist ein einfacher Weg, es zu tun.
Es gibt auch andere Möglichkeiten, wie Sie das tun können. OpenGL hat sehr leistungsfähige Koordinatentransformationsfunktionen und Matrixmathematikfunktionen. Diese können nützlicher werden, wenn Sie immer ausgefeiltere Programme entwickeln. Sie sind am nützlichsten, wenn Sie Dinge in Echtzeit auf dem Bildschirm bewegen oder mit unglaublich großen Datensätzen arbeiten, da sie Ihnen erlauben, diese mathematischen Berechnungen sehr schnell mit Ihrer Grafikhardware durchzuführen (die in der Lage ist, mach sie viel schneller als die CPU). Jedoch ist die Zeit, die die CPU benötigt, um einfache Berechnungen wie jene durchzuführen, bei denen Sie sie nur einmal oder sehr selten auf begrenzten Datensätzen ausführen werden, für Computer heute kein Problem.
Was meinen Sie mit "Punkte in einem bestimmten Raster zeichnen"? Wollen Sie, dass das Gitter mit gepunkteten Linien gezeichnet wird oder dass Sie die Punkte in einer Koordinatenskala zeichnen möchten, die Ihrem Datenbereich entspricht? –
Ich muss das Fenster in Regionen und Plotpunkte in diesen Regionen teilen. Jede Region/jedes Gitter bezieht sich auf ein Streudiagramm. Sagen wir, ich habe 400 * 400 Fenster. Ich unterteile mich in 4 gleiche Regionen. Ich weiß wirklich nicht, wie das funktioniert, da ich völlig neu bin. – user1302064