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

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

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

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

24.09.2012, 22:09. Просмотров 2820. Ответов 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     Как нарисовать восьмиугольник?
Посмотрите здесь:

Как нарисовать на С++ 3D пистолет... C++
C++ Как нарисовать графики ?
Как нарисовать график? C++
Как нарисовать окружность C++
C++ Как нарисовать круг
C++ Как на SDL 2 нарисовать пиксель?
C++ написать класс на С++ восьмиугольник в круге
Как нарисовать линию? C++
C++ Как нарисовать линию?
C++ Как нарисовать полигон
C++ Как нарисовать рисунок (BGI)
Как нарисовать такую фигуру? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1744 / 1087 / 71
Регистрация: 13.09.2011
Сообщений: 3,113
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. вспоминай курс школьной геометрии. теорема пифагора в чистом виде
Миниатюры
Как нарисовать восьмиугольник?  
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