Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/27: Рейтинг темы: голосов - 27, средняя оценка - 4.81
Заблокирован
1

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

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

Author24 — интернет-сервис помощи студентам
не получается задать координаты 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2012, 22:09
Ответы с готовыми решениями:

Нарисовать восьмиугольник мышкой
Нужно создать программу, чтобы она могла рисовать восьмиугольники (именно сразу восьмиугольники)...

Нарисовать восьмиугольник с помощью цикла
Помогите, пожалуйста, нарисовать вот такой шестиугольник с помощью цикла

Восьмиугольник
Не могу сделать восьмиугольник на С++. Помогите пожалуйста

Вывести восьмиугольник на экран
Мне нужно вывести восьмиугольник, мне предложили сделать это с помощью точек, но я даже не...

4
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
24.09.2012, 22:19 2
Берешь лист в клетку, рисуешь восьмиугольник, считаешь клеточки... Или вычисляешь синусы/косинусы с шагом в пи/4
1
Заблокирован
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
42 / 42 / 12
Регистрация: 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
Заблокирован
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.09.2012, 23:30
Помогаю со студенческими работами здесь

Восьмиугольник через Polygon
Помогите пожалуйста нарисовать восьмиугольник в delphi в области paintbox с помощью Polygon . p.s....

Начертить правильный восьмиугольник со стороной a
Составить программу построения чертежа плоской фигуры по заданным значениям определяющих ее...

Помогите с графикой АБС(восьмиугольник)
Помогите плиз сеня уже нужно на мыло отправить Отталкиваясь от этого(снимок с экрана)...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru