Форум программистов, компьютерный форум CyberForum.ru

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

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

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

24.09.2012, 22:09. Просмотров 2878. Ответов 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();
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2012, 22:09     Как нарисовать восьмиугольник?
Посмотрите здесь:

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1747 / 1090 / 71
Регистрация: 13.09.2011
Сообщений: 3,120
24.09.2012, 22:19     Как нарисовать восьмиугольник? #2
Берешь лист в клетку, рисуешь восьмиугольник, считаешь клеточки... Или вычисляешь синусы/косинусы с шагом в пи/4
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 );
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. вспоминай курс школьной геометрии. теорема пифагора в чистом виде
Миниатюры
Как нарисовать восьмиугольник?  
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++
У меня заданы функции: y1=a0+a1*x/exp(1/x) y2=a0+a1*log(sqrt(x)) и массив известных значений У a0,a1 известны, x- заданный массив ...

Как нарисовать машинку 2 на 3 ячеек? - C++
Пытаюсь написать игрушку типа мини-гоночек.Трассу сделал! Теперь нужно не считая перемещение, нарисовать саму машинку. Никак не...

Графика.Как нарисовать квадрат? - C++
Собственно вопрос в теме...как нарисовать простейий квадрат с помощью линий

Как нарисовать график функции ? - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &quot;graphics.h&quot; #include &lt;windows.h&gt; #include &lt;string&gt; ...


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

Или воспользуйтесь поиском по форуму:
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. вспоминай курс школьной геометрии. теорема пифагора в чистом виде
ем спасибо) сейчас буду пробовать)
Yandex
Объявления
24.09.2012, 23:30     Как нарисовать восьмиугольник?
Ответ Создать тему
Опции темы

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