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

Изобразить последовательно зацепленными N шестерней с заданными параметрами - C++

Восстановить пароль Регистрация
 
anika35
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 11
08.11.2012, 08:13     Изобразить последовательно зацепленными N шестерней с заданными параметрами #1
Изобразить в зацеплении две шестерни (зубчатых колеса) какого – либо механизма; диаметры шестерен и количество зубьев задаются.
РАЗВИТИЕ ЗАДАЧИ. Изобразить последовательно зацепленными n шестерен с заданными параметрами; при необходимости смасштабировать чертеж до размеров экрана.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2012, 08:13     Изобразить последовательно зацепленными N шестерней с заданными параметрами
Посмотрите здесь:

C++ Определить, попадает ли точка в закрашенные области с заданными параметрами.
C++ Реализовать описание метода класса с заданными параметрами
Определить, попадает ли точка с координатами в закрашенные области с заданными параметрами C++
C++ Вызов функции с не заданными параметрами из объекта класса
Вычислить объем фигуры, у которой в основании сектор окружности с заданными параметрами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
 Аватар для vxg
2663 / 1674 / 157
Регистрация: 13.01.2012
Сообщений: 6,237
08.11.2012, 13:57     Изобразить последовательно зацепленными N шестерней с заданными параметрами #2
и? строим набор дуг и линий по определенным правилам. перед тем как писать код полчаса сидим с карандашом над бумагой и вспоминаем геометрию. где остановились?
Croessmah
08.11.2012, 14:04
  #3

Не по теме:

Цитата Сообщение от vxg Посмотреть сообщение
перед тем как писать код полчаса сидим с карандашом над бумагой и вспоминаем геометрию. где остановились?
что-то мне подсказывает, что на покупке карандаша

anika35
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 11
08.11.2012, 14:58  [ТС]     Изобразить последовательно зацепленными N шестерней с заданными параметрами #4
уже сдала
vxg
Модератор
 Аватар для vxg
2663 / 1674 / 157
Регистрация: 13.01.2012
Сообщений: 6,237
08.11.2012, 14:59     Изобразить последовательно зацепленными N шестерней с заданными параметрами #5
молодец
blr_LeLiK
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 7
08.10.2016, 21:52     Изобразить последовательно зацепленными N шестерней с заданными параметрами #6
Доброго времени суток! Столкнулся с такой же задачей. Программа должна быть выполнена в виде оконного приложения Windows в C++Builder 6. Подскажите, пожалуйста, как хотя бы нарисовать эти шестерни и масштабировать всё это дело.
MansMI
1047 / 844 / 205
Регистрация: 08.01.2012
Сообщений: 3,026
08.10.2016, 22:13     Изобразить последовательно зацепленными N шестерней с заданными параметрами #7
эвольвента, модуль шестерни, передаточное отношение, слова то какие! ... молодость, синоним любви
blr_LeLiK
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 7
08.10.2016, 23:25     Изобразить последовательно зацепленными N шестерней с заданными параметрами #8
Любовь это конечно хорошо. Модуль и передаточное отношение рассчитать не проблема, вот графику нарисовать с заданными параметрами, это как-то не моё .
Selot
155 / 91 / 23
Регистрация: 19.01.2010
Сообщений: 364
Завершенные тесты: 1
08.10.2016, 23:49     Изобразить последовательно зацепленными N шестерней с заданными параметрами #9
Нет билдера 6 у меня, но компонент TPaintBox там вроде есть. Рисование можно делать, например, так:
C++
1
2
    PaintBox1->Canvas->Rectangle(5, 5, 100, 100);  
    PaintBox1->Canvas->Ellipse(5, 5, 100, 100);
там есть еще всякие разные способы рисования
blr_LeLiK
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 7
09.10.2016, 00:03     Изобразить последовательно зацепленными N шестерней с заданными параметрами #10
Круг и эллипс - это конечно хорошо. Я понимаю, что рисуем определенное количество кругов с центром в определенных координатах, но не представляю как на всей этой красоте нарисовать зубья шестеренок в нужных местах.
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
09.10.2016, 00:58     Изобразить последовательно зацепленными N шестерней с заданными параметрами #11
А ты линиями и дугами, а не кругами и прямоугольниками. Но там считать придется, конечно, и на листке бумаги немного поколдовать для понимания.
blr_LeLiK
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 7
09.10.2016, 10:44     Изобразить последовательно зацепленными N шестерней с заданными параметрами #12
А по подробней как-нибудь объяснить можно? Еще я где-то встречал что в OpenGL есть стандартная функция для рисования шестерни, может в курсе что за она и можно ли ей воспользоваться в данной ситуации?
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
09.10.2016, 11:28     Изобразить последовательно зацепленными N шестерней с заданными параметрами #13
Первый раз слышу о стандартной функции для рисования шестерни) Вообще говоря, в OpenGL, в чистом виде, даже круг нарисовать нельзя (если не использовать glu) - во всяком случае, раньше так было. Так что шестерня - это слишком жирно.

Прояви смекалку. Можно вообще не рисовать круг и ограничиться LINE_LOOP'ом (про округлость шестерни никто ведь не говорил). А зубья можно сделать треугольниками (хотя бы для начала), только делать это по кругу (параметрическую формулу для круг через синус и косинус ведь никто не отменял), и получится нечто типа _/\_/\_/\_, только по границе круга. Уже что-то похожее на шестерню.
blr_LeLiK
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 7
09.10.2016, 12:30     Изобразить последовательно зацепленными N шестерней с заданными параметрами #14
Треугольники как вариант! Только вот если кто задаст малое количество зубов на большой диаметр шестерни, то получится не очень красиво!
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
09.10.2016, 13:14     Изобразить последовательно зацепленными N шестерней с заданными параметрами #15
Это уже их проблемы) Если зададут малое количество зубьев с квадратными зубьями, тоже будет мало похоже на шедевр)
blr_LeLiK
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 7
09.10.2016, 14:45     Изобразить последовательно зацепленными N шестерней с заданными параметрами #16
Тоже верно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2016, 17:02     Изобразить последовательно зацепленными N шестерней с заданными параметрами
Еще ссылки по теме:

Напечатать все члены полученной арифметической прогрессии с заданными параметрами и их сумму C++
C++ Можно ли построить башню с заданными параметрами?
Как определить наличие конструктора с заданными параметрами? C++

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

Или воспользуйтесь поиском по форуму:
blr_LeLiK
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 7
10.10.2016, 17:02     Изобразить последовательно зацепленными N шестерней с заданными параметрами #17
Всё доволи таки просто, останется немного допилить!
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
struct cogwheel
{
  TPoint point;  // центр
  int r, toothHeight, toothCount, angle, rCenter, dir, speed;  // радиус, высота зубьев, кол-во, угол, центр оси, направление и скорость вращения
  TColor color, color2, color3;  // цвет колеса, зубьев и оси
}cw;
//---------------------------------------------------------------------------
void draw_cogwheel(cogwheel)
{
  Form1->Canvas->Brush->Color = cw.color;
  Form1->Canvas->Pen->Color = cw.color;
  Form1->Canvas->Ellipse(cw.point.x-cw.r, cw.point.y-cw.r, cw.point.x+cw.r, cw.point.y+cw.r);
 
  Form1->Canvas->Brush->Color = cw.color2;
  Form1->Canvas->Pen->Color = cw.color2;
  int rOut = cw.r + cw.toothHeight;
  TPoint points[4];
  for (int i = 0; i < cw.toothCount; i++)
  {
    points[0] = Point(cw.point.x+cw.r*cos(cw.angle*M_PI/180+2*M_PI*i/cw.toothCount), cw.point.y+cw.r*sin(cw.angle*M_PI/180+2*M_PI*i/cw.toothCount));
    points[1] = Point(cw.point.x+cw.r*cos(cw.angle*M_PI/180+(i+.5)/cw.toothCount*2*M_PI), cw.point.y+cw.r*sin(cw.angle*M_PI/180+(i+.5)/cw.toothCount*2*M_PI));
    points[2] = Point(cw.point.x+rOut*cos(cw.angle*M_PI/180+(i+.4)/cw.toothCount*2*M_PI), cw.point.y+rOut*sin(cw.angle*M_PI/180+(i+.4)/cw.toothCount*2*M_PI));
    points[3] = Point(cw.point.x+rOut*cos(cw.angle*M_PI/180+2*M_PI*(i+.1)/cw.toothCount), cw.point.y+rOut*sin(cw.angle*M_PI/180+2*M_PI*(i+.1)/cw.toothCount));
    Form1->Canvas->Polygon(points, 3);
  }
 
  Form1->Canvas->Brush->Color = cw.color3;
  Form1->Canvas->Pen->Color = cw.color3;
  Form1->Canvas->Ellipse(cw.point.x-cw.rCenter, cw.point.y-cw.rCenter, cw.point.x+cw.rCenter, cw.point.y+cw.rCenter);
}
Yandex
Объявления
10.10.2016, 17:02     Изобразить последовательно зацепленными N шестерней с заданными параметрами
Ответ Создать тему
Опции темы

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