Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.77
punkvalera
Заблокирован
#1

Как нарисовать восьмиугольник? - C++

24.09.2012, 22:09. Просмотров 2945. Ответов 4
Метки нет (Все метки)

не получается задать координаты 8-угольника(

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <stdlib.h>
//------------- GLUT ------------------
#define GLUT_BUILDING_LIB
 
#include "glut.h"
#pragma comment(lib,"glut32-bcb.lib")
//------------------------------------
#pragma hdrstop
#include <tchar.h>
//---------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>
 
 
float WinWid = 600.0;
float WinHei = 600.0;
float size=30,line=3,c=0,o=0,l=1,R,G,B,Z;
bool down=false;
float x1=0.0, y1=0.0;
 
 
void MousePressed(int button, int state, int x, int y)
{
        down= button==GLUT_LEFT_BUTTON && state==GLUT_LEFT;
        if(down)
        {
                x1=x-WinWid/2;
                y1=y-WinHei/2;
 
    [COLOR="Red"]  glBegin(GL_POLIGON);
glColor3d(4,0,1);
   glVertex3f(x-0.2, y-0.1,  0.0 );
  glVertex3f(x-0.1,  y+0.2,  0.0 );
  glVertex3f( x+0.2,  y+0.3,  0.0 );
  glVertex3f( x+0.4, y-0.1,  0.0 );
  glVertex3f( x+0.4,  y+0.1,  0.0 );
glVertex3f( x+0.4,  y+0.1,  0.0 );
glVertex3f( x+0.4,  y+0.1,  0.0 );
glVertex3f( x+0.4,  y+0.1,  0.0 );
glEnd();                                          //не понимаю как их задавать 
   glFlush();
   glFinish();
 
 
   }
   }
 
   void MenuChek (int v )
{
    switch (v)
    {
    case 0:  break; glutSetWindowTitle (""); break;
    }
}
 
 
void SubMenuChek (int v )
{
  switch (v)
    {
    case 1: c=255; o=0; l=0; /*RED*/  glutSetWindowTitle ("Червоний"); break;
    case 2: c=0; o=255; l=0; /*GREEN*/ glutSetWindowTitle ("Зелений"); break;
    case 3: c=0; o=0; l=255; /*BLUE*/ glutSetWindowTitle ("Синій"); break;
    case 4: c=0; o=255; l=255; /*WATER*/ glutSetWindowTitle ("WATER"); break;
    case 5: c=255; o=0; l=255; /*PINK*/ glutSetWindowTitle ("Рожевий"); break;
    case 6: c=255; o=255; l=0; /*YELLOW*/ glutSetWindowTitle ("Жовтий"); break;
    case 7: c=255; o=255; l=255; /*WHITE*/ glutSetWindowTitle ("Білий"); break;
 
    }
 
}
 
 
void SubMenuChek3 (int v )
{
  switch (v)
    {
    case 14: R=1;G;B;Z; glutSetWindowTitle ("Червоний фон"); glutPostRedisplay(); break;
    case 15: R;G=1;B;Z; glutSetWindowTitle ("Зелений фон"); glutPostRedisplay(); break;
    case 16: R;G;B=1;Z; glutSetWindowTitle ("Синій фон"); glutPostRedisplay(); break;
    case 17: R=0;G=0;B=0;Z=0; glutSetWindowTitle ("Чорний"); glutPostRedisplay(); break;
    case 18: R=(float)rand()/(float)RAND_MAX;;G=(float)rand()/(float)RAND_MAX;;B=(float)rand()/(float)RAND_MAX;;Z=(float)rand()/(float)RAND_MAX;; glutSetWindowTitle ("Випадковий колір");glutPostRedisplay(); break;
    }
 
}
 
 
void mauseMenu()
{
   int M=glutCreateMenu(MenuChek);
   int V=glutCreateMenu(MenuChek);
   int F=glutCreateMenu(MenuChek);
   int L=glutCreateMenu(MenuChek);
   int Msub=glutCreateMenu(SubMenuChek);
   int Fsub=glutCreateMenu(SubMenuChek3);
   glutSetMenu(Msub);
   glutAddMenuEntry("Червоний",1);
   glutAddMenuEntry("Зелений",2);
   glutAddMenuEntry("Синій",3);
   glutAddMenuEntry("WATER",4);
   glutAddMenuEntry("Рожевий",5);
   glutAddMenuEntry("Жовтий",6);
   glutAddMenuEntry("Білий",7);
   glutAddMenuEntry ("Нова ламана",0);
   glutSetMenu(Fsub);
   glutAddMenuEntry("Червоний",14);
   glutAddMenuEntry("Зелений",15);
   glutAddMenuEntry("Синій",16);
   glutAddMenuEntry("Чорний",17);
   glutAddMenuEntry("Випадковий колір",18);
   glutSetMenu(F);
   glutAddSubMenu("Колір фігури",Msub);
   glutAddSubMenu("Змінити Фон",Fsub);
   glutAttachMenu (GLUT_RIGHT_BUTTON);
}
 
 
void Picture()
{
   glClearColor(R,G,B,Z);
   glClear(GL_COLOR_BUFFER_BIT |  GL_DEPTH_BUFFER_BIT);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(-WinWid/2, WinWid/2, WinHei/2, -WinHei/2, -200.0, 200.0);
        glMatrixMode(GL_MODELVIEW);
   glFlush();
 
   }
main(int argc, char *argv[])
{
 
   glutInit(&argc, argv);
   glutInitDisplayMode(GLUT_RGB);
   glutInitWindowSize(WinWid, WinHei);
   glutCreateWindow("Лабораторна робота №1 OpenGL ");
   glutDisplayFunc(Picture);
   glutMouseFunc(MousePressed);
 
   mauseMenu();
   glutMainLoop();
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2012, 22:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как нарисовать восьмиугольник? (C++):

написать класс на С++ восьмиугольник в круге - C++
Всем привет. Нужна ваша помощь. Нужно создать класс на С++ восьмиугольник в круге в режиме form. Кто знает, подскажите или может у когото...

Как нарисовать график? - C++
У меня заданы функции: y1=a0+a1*x/exp(1/x) y2=a0+a1*log(sqrt(x)) и массив известных значений У a0,a1 известны, x- заданный массив ...

Как нарисовать линию? - C++
Point P7(74,10); P7.Draw(dc); Point P8(300,300); P8.Draw(dc); dc.MoveTo(......); сюда взять координаты Р7 ...

Как нарисовать гистограму в с++? - C++
Здравствуйте, подскажите пожалуйста как нарисовать гистограмму по значениям.

Как нарисовать полигон - C++
Помогите пожалуйста найти методички и материал для построения.

Как нарисовать на С++ 3D пистолет... - C++
Нарисовать на С++ 3D пистолет, который можно вращать(проверка на трехмерность), и за компанию , чтоб стрелял. Как это написать на Visual...

4
NoMasters
Псевдослучайный
1764 / 1107 / 73
Регистрация: 13.09.2011
Сообщений: 3,143
24.09.2012, 22:19 #2
Берешь лист в клетку, рисуешь восьмиугольник, считаешь клеточки... Или вычисляешь синусы/косинусы с шагом в пи/4
1
punkvalera
Заблокирован
24.09.2012, 23:08  [ТС] #3
Цитата Сообщение от NoMasters Посмотреть сообщение
Берешь лист в клетку, рисуешь восьмиугольник, считаешь клеточки... Или вычисляешь синусы/косинусы с шагом в пи/4
а можно поподробней? насчет листочка?
Вложение 185038

не пойму что куда добавлять
glVertex3f(x1-0.2, y1-0.1, 0.0 );
glVertex3f(x1-0.1, y1+0.2, 0.0 );
glVertex3f( x1+0.2, y1+0.3, 0.0 );
glVertex3f( x1+0.4, y1-0.1, 0.0 );
glVertex3f( x1+0.4, y1+0.1, 0.0 );
glVertex3f( x1+0.4, y1+0.1, 0.0 );
glVertex3f( x1+0.4, y1+0.1, 0.0 );
glVertex3f( x1+0.4, y1+0.1, 0.0 );
0
soundtrack
42 / 42 / 4
Регистрация: 15.12.2011
Сообщений: 131
24.09.2012, 23:21 #4
punkvalera, то, что ты нарисовал - конечно многоугольник, но его координаты уж очень произвольны Насколько я понимаю - тебе нужен правильный восьмиугольник.
Вот, примерно, такой:

Ну а его координаты, если взять радиус 4 к примеру, будут такими (по часовой):
(0;4), (4-cos45; 4-cos45), (4;0), (4-cos45;-4+cos45), (0;-4), (-4+cos45; -4+cos45), (-4;0), (-4+cos45;4-cos45)

P.S. вспоминай курс школьной геометрии. теорема пифагора в чистом виде
1
Миниатюры
Как нарисовать восьмиугольник?  
punkvalera
Заблокирован
24.09.2012, 23:30  [ТС] #5
Цитата Сообщение от soundtrack Посмотреть сообщение
punkvalera, то, что ты нарисовал - конечно многоугольник, но его координаты уж очень произвольны Насколько я понимаю - тебе нужен правильный восьмиугольник.
Вот, примерно, такой:

Ну а его координаты, если взять радиус 4 к примеру, будут такими (по часовой):
(0;4), (4-cos45; 4-cos45), (4;0), (4-cos45;-4+cos45), (0;-4), (-4+cos45; -4+cos45), (-4;0), (-4+cos45;4-cos45)

P.S. вспоминай курс школьной геометрии. теорема пифагора в чистом виде
ем спасибо) сейчас буду пробовать)
0
24.09.2012, 23:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2012, 23:30
Привет! Вот еще темы с ответами:

Как нарисовать круг - C++
Нужно нарисовать круг

Как нарисовать графики ? - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void main() { const int X=4,Y=12; const...

Как нарисовать окружность - C++
Подскажите, пожалуйста, как нарисовать окружность в Microsoft Visual C++ .:thank_you:

Как нарисовать линию? - C++
Подскажите, использую TurboC++, как нарисовать линию, любую! хочу начать практиковаться


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru