Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 21.06.2011, 12:45   #1
Dark19
 
Регистрация: 17.01.2011
Сообщений: 3
По умолчанию Запись координат в массив в реал тайм, Как записать координаты в массив

Возникла проблема записи координат от мышки в массив. Мне нужно чтобы координаты сохранялись в массиве и тут же отрисовывались после каждого события от мышки. Я решил сделать запись координат с помощью цикла for (
Код:
for (int i=1;i<1000;i++)
				{
					glVertex2f(x1,z);
					glVertex2f(x2,z1);
					glEnd();
			mas3[i-1]=x;
			mas4[i-1]=y;
			mas1[i-1]=x2;
			mas2[i-1]=z1;



					glVertex2f(mas1[i-1],mas2[i-1]);
					glVertex2f(mas3[i-1],mas4[i-1]);
					glEnd();
					 
					 cout<<i<<endl;
					 
				}
), но i в нем тогда не растет по одному, а сразу же от 1 до 1000, пока я еще и не начал рисовать. Мне нужно сделать так чтобы i росло по 1 с каждой нарисованной линией и координаты сохранялись в массив по очереди и потом отрисовывались. Подскажите как можно сделать?

Код:
#include <windows.h> 
#include <iostream>
#include <glut.h>
using namespace std;
int const n=1000;
int i=1,m=0,j=0,k=0,p=1;
int x=0,b=0;
int x1,x2;
int y=0,c=0;
int z,z1;
int mas1[n],mas2[n],mas3[n],mas4[n];
bool down=false, l=false;
unsigned char kei;



void keyboard ( unsigned char key, int x, int y)
{
	 switch (key) 
		  {

				case 'q':

				exit(0);

				break;
	 }
}


      void reshape(int w, int h)
       {
            glViewport(0, 0, w, h);
     
			glMatrixMode(GL_PROJECTION);
			glLoadIdentity();

            gluOrtho2D(0, w, h, 0);
             
			glMatrixMode(GL_MODELVIEW);
            glLoadIdentity();
      }


void mouse(int button, int state, int ax, int ay)
{
	if (state == GLUT_DOWN)
	{
		down=true;
		l=true;
	}
	else
	{
		down=false;
		l=false;
	}
	x=ax;
	y=ay;
}
void motion(int ax, int ay)
{
	x1=x;
	z=y;

	if (l)
	{

		x2=ax;
		z1=ay;
	}
	
		if (!l)
	{
		x1=ax;
		z=ay;
	}
		
	
	
	
}

void Draw()
{
	
	glClearColor(0.0,0.0,0.0,0.0);                       //Цвет, в который очищается окно
        glClear (GL_COLOR_BUFFER_BIT);                        //Очищение
                
                glColor3f(1.0,0.0,0.0);  
       
	   		
                glBegin(GL_LINES);
				for (int i=1;i<1000;i++)
				{
					glVertex2f(x1,z);
					glVertex2f(x2,z1);
					glEnd();
			mas3[i-1]=x;
			mas4[i-1]=y;
			mas1[i-1]=x2;
			mas2[i-1]=z1;



					glVertex2f(mas1[i-1],mas2[i-1]);
					glVertex2f(mas3[i-1],mas4[i-1]);
					glEnd();
					 
					 cout<<i<<endl;
					 
				}	
						
		glutSwapBuffers();

}


void timer(int=0)
{
	Draw(); 
	glutTimerFunc (1,timer,0);
	

}
void Initialize()
{
	glClearColor (0.0, 0.0, 0.0, 0.0);
	glMatrixMode (GL_PROJECTION);
	glLoadIdentity();
	glOrtho (0, 1280, 1024, 0, -1, 1);
		
	
}
int main(int iArgc,char** cppArgv)
{


		
				glutInit (&iArgc, cppArgv);
				glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
				
				glutInitWindowPosition (0, 0);
				glutCreateWindow ("GRAF");
				Initialize();
				glutFullScreen();
			glutReshapeFunc (reshape);
		
			glutKeyboardFunc(keyboard);
				glutMouseFunc(mouse);
				glutMotionFunc(motion);
				//glutPassiveMotionFunc(motion);
				glutDisplayFunc (Draw);
			


			  
		timer();
			
				glutMainLoop ();

		  
	
		
		cin.get();
		cin.get();
}

Последний раз редактировалось Dark19; 21.06.2011 в 12:51.
Dark19 вне форума Ответить с цитированием
Старый 21.06.2011, 14:50   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,074
По умолчанию

Цитата:
Мне нужно чтобы координаты сохранялись в массиве и тут же отрисовывались после каждого события от мышки.
Рядом с массивом храним текущий(последний заполненный) индекс.
При наступлении события
1.увеличиваем индекс (первый пустой)
2.записываем данные в массив по данному индексу.
3. рисуем ?
0. И не забываем контролировать границы массива и устанавливать начальный индекс массива при запуске
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 21.06.2011 в 14:53.
evg_m вне форума Ответить с цитированием
Старый 21.06.2011, 17:45   #3
Dark19
 
Регистрация: 17.01.2011
Сообщений: 3
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Рядом с массивом храним текущий(последний заполненный) индекс.
При наступлении события
1.увеличиваем индекс (первый пустой)
Не могу увеличить индекс на 1 он почему то увеличивается на максимум в for, а если просто увеличивать то до бесконечности.
Dark19 вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как записать текст из RichEdit в массив? Jane_123 Помощь студентам 4 19.05.2010 10:21
Как записать в массив время нажатия, отжатия клавиш Berta Помощь студентам 4 06.04.2010 16:29
Как записать в файл динамический массив. Вадим Буренков Общие вопросы Delphi 9 24.07.2009 14:12
БД и пользователи. Реал-тайм. Ramires БД в Delphi 7 19.01.2009 10:40
как прочитать из файла имя, фамилию разделенные пробелами и записать их в массив парами Rom@shka Общие вопросы C/C++ 2 13.12.2008 16:40


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840