Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 24.12.2011
Сообщений: 5

Вращающийся отрезок переделать в треугольник

26.12.2011, 17:55. Показов 1003. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет)). Давным\давно кто то выгладывал программу вращающего отрезка. Мне надо что-то типа такого, только треугольник. Я смог кривым способом начертить ещё одну сторону треугольника, осталось поставить ещё одну линию, что бы это был треугольник)). Ребята помогитее ! Заранее спасибо)

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
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <complex.h>
#include <istream.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
typedef complex<double>Complex;
int HalfX;
int HalfY;
 
struct C3DPoint
{
        double x;
        double y;
        double z;
};
//---------------------------------------------------------------------------
struct CCube
{
        C3DPoint Points[8];
};
//---------------------------------------------------------------------------
CCube Cube;
Complex CoordinateSystem[3];
void InitCube()
{
        Cube.Points[0].x=100;
        Cube.Points[0].y=100;
        Cube.Points[0].z=200;
        Cube.Points[1].x=200;
        Cube.Points[1].y=0;
        Cube.Points[1].z=0;
 
 
}
//---------------------------------------------------------------------------
void RotateCube(double XAngle, double YAngle, double ZAngle)
{
        double Angle;
        Complex CurCoord;
        Angle =  -(M_PI * XAngle) / 180;
        for(int i=0;i<8;i++)
        {
                CurCoord=Complex(Cube.Points[i].y,Cube.Points[i].z);
                CurCoord*=std::polar(1.0, Angle);
                Cube.Points[i].y=real(CurCoord);
                Cube.Points[i].z=imag(CurCoord);
        }
        Angle =  -(M_PI * YAngle) / 180;
        for(int i=0;i<8;i++)
        {
                CurCoord=Complex(Cube.Points[i].x,Cube.Points[i].z);
                CurCoord*=std::polar(1.0, Angle);
                Cube.Points[i].x=real(CurCoord);
                Cube.Points[i].z=imag(CurCoord);
        }
 
 
        Angle =  -(M_PI * ZAngle) / 180;
        for(int i=0;i<8;i++)
        {
                CurCoord=Complex(Cube.Points[i].x,Cube.Points[i].y);
                CurCoord*=std::polar(1.0, Angle);
                Cube.Points[i].x=real(CurCoord);
                Cube.Points[i].y=imag(CurCoord);
        }
 
}
//---------------------------------------------------------------------------
void DrawCube(TCanvas * Canvas)
{
 
        Canvas->Brush->Color=clWhite;
         //Canvas->LineTo(950,690);
        Canvas->FillRect(TRect(0,0,HalfX*2+1,HalfY*2+1));
        Canvas->Pen->Color=clRed;
        Canvas->Pen->Width=1;
        //Canvas->LineTo(150,190);
        Canvas->MoveTo(HalfX+Cube.Points[0].x,HalfY+Cube.Points[0].y);
        for(int i=1;i<4;i++)
                Canvas->LineTo(HalfX+Cube.Points[i].x,HalfY+Cube.Points[i].y);
 
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
        InitCube();
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormShow(TObject *Sender)
{
    TRect Rect = Image1->Canvas->ClipRect;
    HalfX=Rect.Width()/2;
    HalfY=Rect.Height()/2;
    InitCube();
        RotateCube(0, 45, 0);
        RotateCube(-45, 0, 0);
        CoordinateSystem[0]=Complex(Cube.Points[1].x,Cube.Points[1].y);
        CoordinateSystem[0]+=CoordinateSystem[0];
        CoordinateSystem[1]=Complex(Cube.Points[3].x,Cube.Points[3].y);
        CoordinateSystem[1]+=CoordinateSystem[1];
        CoordinateSystem[2]=Complex(Cube.Points[4].x,Cube.Points[4].y);
        CoordinateSystem[2]+=CoordinateSystem[2];
        DrawCube(Image1->Canvas);
    Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
DoubleBuffered = true;
    static double Angle=0;
    InitCube();
        RotateCube(0, Angle, 0);
        RotateCube(0, 45, 0);
        RotateCube(-45, 0, 0);
        DrawCube(Image1->Canvas);
        Angle++;
        if(Angle>=360)
            Angle=0;
}
//---------------------------------------------------------------------------
Добавлено через 48 минут
Если кому интересно, такой ответ

Cube.Points[0].x=100;
Cube.Points[0].y=100;
Cube.Points[0].z=200;
Cube.Points[1].x=200;
Cube.Points[1].y=0;
Cube.Points[1].z=0;
Cube.Points[3].x=100;
Cube.Points[3].y=100;
Cube.Points[3].z=200;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.12.2011, 17:55
Ответы с готовыми решениями:

Треугольник, вращающийся в плоскости
Изобразить на экране правильный треугольник, вращающийся в плоскости экрана вокруг своего центра. И перемещающегося с постоянной скоростью...

Вращающийся отрезок
Подскажите пожалуйста, как реализовать вращающийся отрезок. Через цикл я создаю отрезки, после чего каждый закрашивается, тем самым...

вращающийся треугольник
Здрастье всем! Плз. помогите неграмотной в етой сфере студентке, препод задал задачку зделать вращающися треугольник на turboС++,...

1
26.12.2011, 17:57
 Комментарий модератора 
softonet, перенаправлять в свою тему с просьбой о помощи - запрещено.
Устное предупреждение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.12.2011, 17:57
Помогаю со студенческими работами здесь

Вращающийся треугольник на С++
Здарова всем!!! плз. помогите сделать прогу &quot; Вращающиеся треугольник на С++&quot;

Нарисовать треугольник, вращающийся вокруг своей оси
Помогите ! Нужно нарисовать равносторонний треугольник и сделать так, чтобы он крутился вокруг своей оси

Изобразить на экране отрезок, вращающийся в плоскости экрана вокруг точки, делящей отрезок в отношении 1:3
Изобразить на экране отрезок, вращающийся в плоскости экрана вокруг точки, делящей отрезок в отношении 1:3. P.S.В задаче должны...

Вращающийся отрезок
Здравствуйте, уважаемые. Помогите с пустяковой программкой. Изобразить отрезок, вращающийся вокруг своей середины. Заранее...

Вращающийся отрезок
Нужно написать прогу в которой отрезок вращался бы в плоскости экрана: 1)вокруг своей середины; 2)вокруг своего конца; 3)относительно...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru