Опубликовано: 2020-05-19 08:00:00
Циклоида
Программы в этой статье представляет собой отрисовку циклоидальных кривых.
Циклоидальная кривая – плоская кривая, рисуемая точкой, находящейся на радиальной прямой окружности, катящейся по какой-либо кривой. Название происходит от греческого слова «круглый».
Рассмотрим исходный текст первой программы:
- SCREEN 12
- RANDOMIZE TIMER
- CLS
- RR1 = 150: RR2 = -50: RR3 = 30: K = 0.45: Q = 0.1
- FOR R1 = RR1 TO 187 STEP 5
- FOR R2 = RR2 TO 240 STEP 5
- FOR R3 = RR3 TO 240 STEP 5
- COL = INT(RND * 15 + 1)
- FOR T = 0 TO 600 STEP Q
- X = INT((R1 + R2) * COS(R2 * T / R1) - R3 * COS((R1 + R2) / R1 * T))
- Y = INT((R1 + R2) * SIN(R2 * T / R1) - R3 * SIN((R1 + R2) / R1 * T))
- PSET (X * K + 320, Y * K + 240), COL
- NEXT
- NEXT
- IF INKEY$ = CHR$(27) THEN GOTO M
- SLEEP 3
- CLS
- NEXT
- NEXT
- M:
- END
Рисунок 1 – Исходный текст для построения циклоиды из первого примера
Рисунок 2 – Результат построения циклоиды из первого примера
Здесь R1 – радиус круга, по которому катится колесо, R2 – радиус колеса, катящегося по кругу, если с минусом, то внутри его и R3 – радиус, на котором лежит рисуемая точка на колесе. Т – счетчик цикла, он же полярный угол, на котором лежит центр колеса в данный момент. Q – глубина прорисовки.
Рассмотрим один пример исходного текста второй программы попроще:
- SCREEN 12
- CLS
- R1 = 111: R2 = 16: R3 = 131: K = 0.85: Q = 0.01
- FOR T = 0 TO 600 STEP Q
- X = INT((R1 + R2) * COS(R2 * T / R1) - R3 * COS((R1 + R2) / R1 * T))
- Y = INT((R1 + R2) * SIN(R2 * T / R1) - R3 * SIN((R1 + R2) / R1 * T))
- PSET (X * K + 320, Y * K + 240), 5
- NEXT
- END
Рисунок 3 – Исходный текст для построения циклоиды из второго примера
Рисунок 4 – Результат построения циклоиды из второго примера
Здесь R1 – радиус круга, по которому катится колесо, R2 – радиус колеса, катящегося по кругу, если с минусом, то внутри его и R3 – радиус, на котором лежит рисуемая точка на колесе. Т – счетчик цикла, он же полярный угол, на котором лежит центр колеса в данный момент. Q – глубина прорисовки.
Спасибо за прочтение этой статьи.