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

BGI библиотека вращение прямой - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
UKOL
 Аватар для UKOL
112 / 64 / 7
Регистрация: 17.11.2009
Сообщений: 258
21.05.2011, 18:43     BGI библиотека вращение прямой #1
Здравствуйте уважаемые форумчане!

Вот беда, не могу справиться с компьютерной графикой. Прошу вашей помощи.
Вот задача:

Аршин. На нижней стороне прямоугольника CDEF (экрана) лежит отрезок AB длиной L. Поворачивая его на 180° (с мелким шагом dfi = 5°) вокруг точки B совместить с прямой. Затем осуществить поворот вокруг точки A и т.д., чередуя A и B осуществить обход по внутренней стороне периметра CDEF. При приближении к границе прямоугольника проверять укладывается ли отрезок до края экрана. Если нет, то поворот надо выполнять на угол 180 - arcsin(dD/L). Где dD расстояние от отрезка до края.

Вот мой код:

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
#include <graphics.h>
#include <math.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#include <stdio.h>
 
void init(void)
{
    int gdriver = DETECT, gmode, errorcode;
    initgraph(&gdriver, &gmode, "D:\\BORLANDC\\BGI\\");
    errorcode = graphresult();
 
    if(errorcode != grOk)
    {
        printf("Graphics errore: %s\n", grapherrormsg(errorcode));
        printf("Press any key to halt: ");
        getch();
        exit(1);
    }
}
 
void main()
{
    //float Cos = cos(5*M_PI/180);
    //float Sin = sin(5*M_PI/180);
    init();
    int L = 100;
    float x1=100, y1=getmaxy(), x2=x1+L, y2=getmaxy();
    float x, y;
    setcolor(RED);
    line(x1,y1,x2,y2);
    getch();
 
    for(int i = 0; !kbhit(); i+=5)
    {
        clearviewport();
        if(i<=180)
        {
            x1 = x2-L*cos(i*M_PI/180);
            y1 = y2-L*sin(i*M_PI/180);
        }
        else
        {
            if(i<=360)
            {
                x2 = x1-L*cos((i+180)*M_PI/180);
                y2 = y1-L*sin((i+180)*M_PI/180);
            }
        }
        if(i>=360)
        {
            i = 0;
        }
 
        setcolor(GREEN);
        line(x1,y1,x2,y2);
        //delay(50);
    }
 
    getch();
    closegraph();
}
Делал на BORLAND C 3.1 в консоли

У меня получается что прямая вращается и уходит за экран. Но мне надо сделать что бы по периметру экрана вращалась прямая. Жду вашей помощи.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2011, 18:43     BGI библиотека вращение прямой
Посмотрите здесь:

C++ windows не поддерживает bgi в borland c++ 3.1
C++ MFC проект! Отрисовка прямой по уравнению прямой Visual C++
C++ Builder Не работает графический режим BGI в Builder C++ 6
Вращение объекта. Библиотека OpenGL. C++ Builder
bgi graphics not supported under windows - borland c++ C++
BGI C++
Не могу подключить файлы из BGI для <graphics.h> C++
C++ borland c++ bgi
C++ BGI graphics.h
DevCpp + bgi, очистка дисплея C++
C++ Как нарисовать рисунок (BGI)
C++ Egavga.bgi graphic error

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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