motofan logo
       
> 

Задача на паскале .Рисунок, Циклы и Graph

Bogd@n
сообщение 15.3.2010, 17:33


Авторитет
********

Группа: Пользователи
Сообщений: 2 492
Регистрация: 3.11.2007
Из: Украина,Артёмовск
Пользователь №: 152 746
Модель телефона: XT1060
Прошивка: 4.4 root


Настроение:
Качай разум, а не мышцы.



Рейтинг: 1059



Как сделать вот такую задачу:Прикрепленное изображениеПрикрепленное изображение (вариант 3)

У информатика спрашиваю:как делать это с циклами.Он полчаса простоял в поисках в интернете..Потом говорит ладно,думай!оО .Потом еще через 10 минут говорит рисуй линиями,там нужно линиями рисовать.оО

Но в задание написано что это как то можно сделать с помощью циклов.Я пытался использовать For to do ,и пытался указать шаг step (нашел в интернете) ,но все время подчеркивало step.Я даже теперь не знаю как делать,линиями рисовать-это будет капец.Подскажите как делать,спасибо.

Сообщение отредактировал Bogd@n - 15.3.2010, 17:34
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
A.Vas
сообщение 15.3.2010, 17:40


Гуру
******

Группа: Пользователи
Сообщений: 1 016
Регистрация: 2.12.2005
Из: г. Томск
Пользователь №: 60 511
Модель телефона: HTC One X
Прошивка: CyanogenMod 11

Рейтинг: 435



Bogd@n,
переведи задание на русский язык - не понятно ничего же. Но, глядя на рисунки, подозреваю, что задача сводится к работе в полярной системе координат и последующем переходе в декартову систему координат.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Bogd@n
сообщение 15.3.2010, 17:54


Авторитет
********

Группа: Пользователи
Сообщений: 2 492
Регистрация: 3.11.2007
Из: Украина,Артёмовск
Пользователь №: 152 746
Модель телефона: XT1060
Прошивка: 4.4 root


Настроение:
Качай разум, а не мышцы.



Рейтинг: 1059



Тема:работа с цикличными операторами в модуле Graph в ТР

Цель.Овладеть способностями создания и реализации программ графического черчения в ТР,в которых есть циклы.

Оборудование:бла-бла

Порядок выполнения работы
1.Загрузит ТР
2.Провести инициализацию графического режима
3Создать программу для черчения трехвазного шагового двигателя при количестве зубьев N8=12 ,ротора Nr=8 и второй рисунок N8=8 ,Nr=6.При чем числовые значения координат схемы Б должны изменятся за циклом от схемы А,а каждый зубец должен вычерчиваться на основании предыдущего за циклом постусловия.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexKooper
сообщение 15.3.2010, 19:57


Авторитет
********

Группа: Почётные мотофаны
Сообщений: 2 838
Регистрация: 27.7.2005
Из: Йошкар-Ола
Пользователь №: 47 140
Модель телефона: E398
Прошивка: AlexKooper mod v.47

Рейтинг: 1337



Цитата
При чем числовые значения координат схемы Б должны изменятся за циклом от схемы А,а каждый зубец должен вычерчиваться на основании предыдущего за циклом постусловия.


вот эту фразу вообще не понял.
много раз прочитал.

А вообще, я вижу такое решение:
1. делим 360 градусов на 12, получаем угол (шаг) для 12-зубого рисунка
2. делаем цикл от 0 до 11, в каждом проходе цикла сначала для текущего угла (изначально 0) рисуем вершину зуба (+5 градусов и -5градусов например), причем через синус-косинус это дело переводим из полярных координат (угол и радиус) в декартовы (Х и У). Для двух радиусов - внешнего и внутреннего, получим П-образный зуб. Затем наращиваем угол на шаг, и идём на следующий цикл.

чтоб зубы связать, надо как-то с дугами разбираться, тут мне лень думать. Но всё сводится к элементарной геометрии, а если не дугой а отрезком соединять - вообще халява.

3. Ротор по аналогичному принципу делается, только наизнанку. Снова циклом. а можно в общий цикл засунуть, но для разного числа зубьев - не советую :)

4. Обмотки нужно?

А вот что за постусловие в задаче - я не понимаю хоть убейте. Из предыдущего цикла можно поиметь координаты конца зуба, к которым начало текущего привязать, это да. А что ещё оттуда можно извлечь?

Добавлено позже (15.3.2010, 23:04):
А что за проблема с for? не надо степ мучить, у тебя есть номер цикла, его умножаешь на шаг угла (360/число зубьев) и получаешь углы для каждого зуба. Так оно и проще и нагляднее, чем это в шаг цикла совать, да ещё дробное.

А при желании можно использовать цикл через repeat - undo, или while, там приращение шага надо руками делать - самое оно для замены степа:)

Сообщение отредактировал AlexKooper - 15.3.2010, 20:00
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Bogd@n
сообщение 15.3.2010, 20:40


Авторитет
********

Группа: Пользователи
Сообщений: 2 492
Регистрация: 3.11.2007
Из: Украина,Артёмовск
Пользователь №: 152 746
Модель телефона: XT1060
Прошивка: 4.4 root


Настроение:
Качай разум, а не мышцы.



Рейтинг: 1059



Цитата(AlexKooper @ Сегодня, 21:57)

причем через синус-косинус это дело переводим из полярных координат (угол и радиус) в декартовы (Х и У).
*


как переводить?

Цитата(AlexKooper @ Сегодня, 21:57)

4. Обмотки нужно?
*


пока нет,это не главное

Цитата(AlexKooper @ Сегодня, 21:57)

Из предыдущего цикла можно поиметь координаты конца зуба, к которым начало текущего привязать, это да. А что ещё оттуда можно извлечь?
*


мне нарисовать нужно не обязательно по условию.Нужно по принципа "лишь бы было",но морочится тупо с линиями не очень охото,по этому спрашиваю как через цикл рисовать.

AlexKooper,
можешь простенький пример привести с циклом?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andrew_71
сообщение 15.3.2010, 23:37


Ветеран
*****

Группа: Пользователи
Сообщений: 374
Регистрация: 9.6.2007
Из: Рио-де-Мясново / Прейсиш Эйлау
Пользователь №: 137 694
Модель телефона: ROKR_Z6
Прошивка: PE 1.86

Рейтинг: 279



Цитата(Bogd@n @ 15.3.2010, 23:40) *

как переводить?


x = r*cos ϕ
y = r*sin ϕ
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexKooper
сообщение 16.3.2010, 8:59


Авторитет
********

Группа: Почётные мотофаны
Сообщений: 2 838
Регистрация: 27.7.2005
Из: Йошкар-Ола
Пользователь №: 47 140
Модель телефона: E398
Прошивка: AlexKooper mod v.47

Рейтинг: 1337



Цитата
x = r*cos ϕ
y = r*sin ϕ



Угу. только угол переводит в радианы, а по Х и У сдвиг до центра экрана прибавить (getmaxX div 2 = центр по Х, getmaxY div 2 = центр по У)
И по У инверсию надо бы сделать... но поскольку фигура симметричная - можно и так оставить :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Bogd@n
сообщение 16.3.2010, 15:41


Авторитет
********

Группа: Пользователи
Сообщений: 2 492
Регистрация: 3.11.2007
Из: Украина,Артёмовск
Пользователь №: 152 746
Модель телефона: XT1060
Прошивка: 4.4 root


Настроение:
Качай разум, а не мышцы.



Рейтинг: 1059



спасибо за помощь,но я немогу понять,знаний малавато:(
Можете дать пример хотя бы линии рисующиеся по кругу через определенный шаг?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexKooper
сообщение 16.3.2010, 17:02


Авторитет
********

Группа: Почётные мотофаны
Сообщений: 2 838
Регистрация: 27.7.2005
Из: Йошкар-Ола
Пользователь №: 47 140
Модель телефона: E398
Прошивка: AlexKooper mod v.47

Рейтинг: 1337



var
x1,x2,x3,x4,y1,y2,y3,y4,ugol,ugol2,r1,r2,cenX,cenY : real;
i: integer;
begin
i:=12; {12 сегментов будет. можно менять через ввод с клавиатуры}
r1:= 80; {радиус внешний}
r2:= 50; {радиус внутренний}
cenX:=250; {коорд. центра окружности}
cenY:=200; {коорд. центра окружности}
ugol:=2*3.14/(i*2); {делим на 24 сегмента, чтоб между зубами был зазор той же ширины}
ugol2:=0; {это текущий угол, он же счетчик цикла}
repeat {это цикл с постусловием}
begin
x1:=round(r1*cos(ugol2)+cenX);
y1:=round(r1*sin(ugol2)+cenY);
x2:=round(r2*cos(ugol2)+cenX);
y2:=round(r2*sin(ugol2)+cenY);
x3:=round(r2*cos(ugol2+ugol)+cenX);
y3:=round(r2*sin(ugol2+ugol)+cenY);
x4:=round(r1*cos(ugol2+ugol)+cenX);
y4:=round(r1*sin(ugol2+ugol)+cenY);
ugol2:=ugol2+ugol +ugol ; {нарастили счетчик цикла на 1/12 от 360 градусов}
LINE(тут рисуем линию из X1Y1 в X2Y2, потом в X3Y3, потом в X4Y4);
end;
until (ugol2>=6.2) {тут проверка что приблизились к 360 градусам, но чуть менее - с учетом что всякие округления были и потери точности}
end.


как-то так

Сообщение отредактировал AlexKooper - 16.3.2010, 17:14
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Bogd@n
сообщение 16.3.2010, 20:38


Авторитет
********

Группа: Пользователи
Сообщений: 2 492
Регистрация: 3.11.2007
Из: Украина,Артёмовск
Пользователь №: 152 746
Модель телефона: XT1060
Прошивка: 4.4 root


Настроение:
Качай разум, а не мышцы.



Рейтинг: 1059



AlexKooper,
огромное спасибо!!! drinks_cheers.gif

А есть варианты как обмотку нарисовать?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
AlexKooper
сообщение 17.3.2010, 6:23


Авторитет
********

Группа: Почётные мотофаны
Сообщений: 2 838
Регистрация: 27.7.2005
Из: Йошкар-Ола
Пользователь №: 47 140
Модель телефона: E398
Прошивка: AlexKooper mod v.47

Рейтинг: 1337



контур обмотки ещё можно помучаться и нарисовать, а вот заливку сеточкой хз, разве что в паскале есть такой тип заливки.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Weaknespase
сообщение 17.3.2010, 20:48


Ветеран
*****

Группа: Пользователи
Сообщений: 361
Регистрация: 11.8.2007
Из: г. Ростов-на-Дону, Россия
Пользователь №: 144 184
Модель телефона: Motorola Droid X^2

Рейтинг: 47



контур обмоток рисовать просто - парабола с линией (параболу можно заменить кривой безье, с анчором поближе к центру - это покрутить надо), насчёт сетки - кажись есть подобный тип заливки, давно паскалем занимался, не помню уже, но в апях на вендах точно такое есть. А даже если и нет - вопрос с сеткой решается там же, при помощи вложенного цикла и небольшого математического упражнения.

Как просохну - напишу.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Задача на паскале .Рисунок, Циклы и Graph · Обо всём · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.7.2025, 15:35

Форум живёт: