Задать вопрос
  • Как нарисовать такую звезду openGL?

    @danij_com Автор вопроса
    Выложу полный код, может кому-то когда-то понадобится (заранее сочувствую)
    spoiler

    #include "OpenGL\glut.h"
    #include "OpenGL\gl.h"
    #include "math.h"
    
    #define PI 3.1415926535897931159979635
    
    //Определение координаты x точки по формуле x = xc+R*cos(f+(2*pi*i/n)),
    //где xc - координата х центра, а f - угловая координата первой вершины
    float __x(float start_angle, int radius, int i, int n, int offset) {
    	return radius * cos(start_angle + (2 * PI * i / n)) + offset;
    }
    //Определение координаты y точки по формуле y = xc+R*sin(f+(2*pi*i/n)),
    //где xc - координата х центра, а f - угловая координата первой вершины
    float __y(float start_angle, int radius, int i, int n, int offset) {
    	return radius * sin(start_angle + (2 * PI * i / n)) + offset;
    }
    
    //Отрисовка звезды, в ф-цию можно передать радиус, кол-во вершин, смещение по оси х и у,
    //а так же угловую координату начальной точки
    void drawStar(int radius, int vertexes, int offset_x, int offset_y, float start_angle) {
    	glClear(GL_COLOR_BUFFER_BIT);
    	glBegin(GL_LINE_LOOP);
    
    	float* o_x = new float[vertexes];
    	float* o_y = new float[vertexes];
    
    	for (int i = 0; i < vertexes; i++) {
    		o_x[i] = __x(start_angle, radius, i, vertexes, offset_x);
    		o_y[i] = __y(start_angle, radius, i, vertexes, offset_y);
    	}
    	for (int i = 0; i < vertexes; i++) {
    		int ind = (i * 3) % vertexes;   //Точки выводим со смещением на 3
    		glVertex2f(o_x[ind], o_y[ind]); //и по модулю 10ти
    	}
    
    	glEnd();
    	glFlush();
    }
    
    void display(){
    	//Такой вызов отрисовывает звезду аналогичную звезде из условия,
    	//угловая координата выбрана "методом тыка"
    	drawStar(200, 10, 320, 240, 6.6);
    	//так же, кол-во вершин лучше ставить кратное 10ти, иначе фигура,
    	//скорее всего, не отрисуется
    }
    
    int main(int argc, char** argv)
    {
    	glutInit(&argc, argv);
    	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    	glutInitWindowSize(640, 480);
    	glutInitWindowPosition(100, 150);
    
    	glutCreateWindow("Star");
    
    	glClearColor(1., 1., 1., 0.);
    	glColor3ub(0, 0, 0); 		
    	glLineWidth(4.);
    	glPointSize(4.); 
    	glMatrixMode(GL_PROJECTION); 
    	glLoadIdentity(); 	
    	gluOrtho2D(0., 640., 0., 480.);
    
    	glutDisplayFunc(display); 
    	glutMainLoop();
    	return 0;
    }

    Ответ написан
    Комментировать
  • Почему загружается только 32768 байт?

    @danij_com Автор вопроса
    В общем написал в саппорт хостеру, они понизили MTU (Maximum Transmission Unit) до 1400, и все заработало как нужно.
    Ответ написан
  • Как выполнить консольную команду без окна?

    @danij_com Автор вопроса
    Решил все вот так:
    string cmdcommand = "/C " + params;
    ShellExecute(NULL, "open", "cmd.exe",  command.c_str(), NULL, SW_HIDE);

    Боюсь получить какие-то подводные камни на дистанции использования такого решения. Или зря боюсь?
    Ответ написан
  • Как настроить планировщик Task Scheduler Managed Wrapper c#?

    @danij_com Автор вопроса
    UPD. Сделал так, по ощущениям - все верно. Время начала настоящее ставится, и повтор каждую минуту.
    using (TaskService ts = new TaskService())
                        {
                            TaskDefinition td = TaskService.Instance.NewTask();
                            td.RegistrationInfo.Description = "Keep Alive";
                            DailyTrigger wt = new DailyTrigger();
                            wt.Repetition.Interval = TimeSpan.FromMinutes(1);
                            td.Triggers.Add(wt);
                            td.Actions.Add(test);
                            TaskService.Instance.RootFolder.RegisterTaskDefinition("Keep alive", td);
                        }
    Ответ написан
    Комментировать