Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 11
1

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

08.11.2012, 08:13. Показов 916. Ответов 16
Метки нет (Все метки)

Изобразить в зацеплении две шестерни (зубчатых колеса) какого – либо механизма; диаметры шестерен и количество зубьев задаются.
РАЗВИТИЕ ЗАДАЧИ. Изобразить последовательно зацепленными n шестерен с заданными параметрами; при необходимости смасштабировать чертеж до размеров экрана.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2012, 08:13
Ответы с готовыми решениями:

Последовательно нарисовать линии с определенными координатами и параметрами.
Можете сказать, что не так Программа должна последовательно рисовать линии с определенными...

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

WIA сканирование с заданными параметрами
Использую WIA для сканирования документов, как можно получить изображение со сканера, без вызова...

Создание файлов с заданными параметрами
Здраствуйте! Помогите пожалуйста с таким вопросом: Мне необходимо создать файл с заданными...

16
Модератор
3343 / 2120 / 347
Регистрация: 13.01.2012
Сообщений: 8,261
08.11.2012, 13:57 2
и? строим набор дуг и линий по определенным правилам. перед тем как писать код полчаса сидим с карандашом над бумагой и вспоминаем геометрию. где остановились?
0
Croessmah
08.11.2012, 14:04
  #3

Не по теме:

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

0
0 / 0 / 0
Регистрация: 10.09.2012
Сообщений: 11
08.11.2012, 14:58  [ТС] 4
уже сдала
0
Модератор
3343 / 2120 / 347
Регистрация: 13.01.2012
Сообщений: 8,261
08.11.2012, 14:59 5
молодец
1
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 7
08.10.2016, 21:52 6
Доброго времени суток! Столкнулся с такой же задачей. Программа должна быть выполнена в виде оконного приложения Windows в C++Builder 6. Подскажите, пожалуйста, как хотя бы нарисовать эти шестерни и масштабировать всё это дело.
0
1466 / 1174 / 551
Регистрация: 08.01.2012
Сообщений: 4,524
08.10.2016, 22:13 7
эвольвента, модуль шестерни, передаточное отношение, слова то какие! ... молодость, синоним любви
0
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 7
08.10.2016, 23:25 8
Любовь это конечно хорошо. Модуль и передаточное отношение рассчитать не проблема, вот графику нарисовать с заданными параметрами, это как-то не моё .
0
191 / 127 / 52
Регистрация: 19.01.2010
Сообщений: 518
08.10.2016, 23:49 9
Нет билдера 6 у меня, но компонент TPaintBox там вроде есть. Рисование можно делать, например, так:
C++
1
2
    PaintBox1->Canvas->Rectangle(5, 5, 100, 100);  
    PaintBox1->Canvas->Ellipse(5, 5, 100, 100);
там есть еще всякие разные способы рисования
1
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 7
09.10.2016, 00:03 10
Круг и эллипс - это конечно хорошо. Я понимаю, что рисуем определенное количество кругов с центром в определенных координатах, но не представляю как на всей этой красоте нарисовать зубья шестеренок в нужных местах.
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
09.10.2016, 00:58 11
А ты линиями и дугами, а не кругами и прямоугольниками. Но там считать придется, конечно, и на листке бумаги немного поколдовать для понимания.
0
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 7
09.10.2016, 10:44 12
А по подробней как-нибудь объяснить можно? Еще я где-то встречал что в OpenGL есть стандартная функция для рисования шестерни, может в курсе что за она и можно ли ей воспользоваться в данной ситуации?
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
09.10.2016, 11:28 13
Первый раз слышу о стандартной функции для рисования шестерни) Вообще говоря, в OpenGL, в чистом виде, даже круг нарисовать нельзя (если не использовать glu) - во всяком случае, раньше так было. Так что шестерня - это слишком жирно.

Прояви смекалку. Можно вообще не рисовать круг и ограничиться LINE_LOOP'ом (про округлость шестерни никто ведь не говорил). А зубья можно сделать треугольниками (хотя бы для начала), только делать это по кругу (параметрическую формулу для круг через синус и косинус ведь никто не отменял), и получится нечто типа _/\_/\_/\_, только по границе круга. Уже что-то похожее на шестерню.
1
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 7
09.10.2016, 12:30 14
Треугольники как вариант! Только вот если кто задаст малое количество зубов на большой диаметр шестерни, то получится не очень красиво!
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
09.10.2016, 13:14 15
Это уже их проблемы) Если зададут малое количество зубьев с квадратными зубьями, тоже будет мало похоже на шедевр)
0
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 7
09.10.2016, 14:45 16
Тоже верно.
0
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 7
10.10.2016, 17:02 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);
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2016, 17:02

Отобразить кольцо с заданными параметрами
Сделал программу, получилась окружность (x_centra, y_centra, radius, cvet), но нужно вывести кольцо...

Вычислить последовательность с заданными параметрами
Даны натуральное число n, действительные числа a, h, b, d0 , ..., dn . Вычислить d0 + d1(b–a) +d2(b...

Нарисовать пирамиду с заданными параметрами
Расположить на вкладке компоненты для ввода параметров изображения и кнопку «Рисование», по нажатию...

Всплывающее окно с заданными параметрами
Вот есть вполне рабочий код &lt;a href=&quot;https://yadi.sk/d/YwYwn_kKadPtT&quot; title=&quot;Сохранить ...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru