Что вам нужно сделать, так это преобразовать координаты ваших данных (x, y) в экранные координаты.Самый простой способ сделать это на самом деле не полагается на OpenGL или GLUT.Все, что вам нужно сделать, это использовать немного математики.Определите экранные (x, y) координаты места, где вы хотите, чтобы точка данных для (0,0) находилась на экране, а затем определите, насколько далеко вы хотите, чтобы один шаг был на экране.Просто возьмите исходные точки данных, примените смещение, а затем масштабируйте их, чтобы получить координаты экрана, которые вы затем передаете в glVertex2f()
(или любую другую функцию, которую вы используете для указания точек в вашем API).
Например, вы можете решить, что хотите, чтобы точка (0,0) в ваших данных находилась в местоположении (200,0) на вашем экране, а расстояние между 0 и 1 в ваших данных составляло 30 пикселей на экране.Эта операция будет выглядеть следующим образом:
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
Вам придется определить значения, которые имеют смысл для масштабирования и смещения.Ваша программа также может использовать разные значения для разных наборов данных, поэтому вы можете отображать несколько графиков на одном экране.Но это простой способ сделать это.
Есть и другие способы сделать это.OpenGL имеет очень мощные функции преобразования координат и математические математические возможности.Они могут стать более полезными, когда вы разрабатываете все более сложные программы.Они наиболее полезны, если вы собираетесь перемещать объекты по экрану в режиме реального времени или работать с невероятно большими наборами данных, поскольку они позволяют очень быстро выполнять эти математические вычисления с помощью графического оборудования (которое способносделать их намного быстрее, чем процессор).Однако время, которое требуется ЦП для выполнения простых вычислений, подобных тем, которые вы собираетесь выполнять только один раз или очень редко на ограниченных наборах данных, сегодня не является проблемой для компьютеров.