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 |
//C++ 3.1 Листинг #1 MS-DOS Спираль Архимеда #include <graphics.h> #include <stdlib.h> #include <iostream.h> #include <conio.h> #include <math.h> int main() { double x = 0; double y = 0; double angle = 0; int a = 10; //Расстояние между витками unsigned r0 = 15; unsigned maxPoints = 1500; //число соединяемых точек int gr = DETECT, gm; initgraph(&gr, &gm, ""); moveto(x+getmaxx()/2 + radius, y+getmaxy()/2 ); //Устанавливаем перо в точку начала рисования for (int i = 0; i < maxPoints; i++) { angle = 0.01 * i; x = (radius + a * angle) * cos(angle); y = (radius + a * angle) * sin(angle); lineto(x + getmaxx()/2, y+getmaxy()/2); //тянем линию к полученной координате } cin.get(); closegraph(); return 0; } |
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 |
//C++ 3.1 Листинг #2 MS-DOS Спираль Архимеда #include <graphics.h> #include <stdlib.h> #include <iostream.h> #include <conio.h> #include <math.h> int main() { double x = 0; double y = 0; double angle = 0; double a = 10; unsigned radius = 5; unsigned maxPoints = 5550; unsigned line_width = 10; int gr = DETECT, gm; initgraph(&gr, &gm, ""); int dx = getmaxx()/2; int dy = getmaxy()/2; moveto(x + dx + radius, y + dy ); //Устанавливаем перо в точку начала рисования setfillstyle(1, YELLOW); setcolor(YELLOW); for (int i = 0; i < maxPoints; i++) { angle = 0.01 * i; x = (radius + a * angle) * cos(angle); y = (radius + a * angle) * sin(angle); fillellipse( x + dx, y + dy, line_width, line_width ); //lineto(x + getmaxx()/2+radius, y+getmaxy()/2); //тянем линию к полученной координате } cin.get(); closegraph(); return 0; } |
1 2 3 |
angle = 0.01 * i; x = (radius + a * angle) * cos(-angle); y = (radius + a * angle) * sin(-angle); |
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 |
//С++ 3.1 Листинг #3 Спираль Архимеда с задаваемым размахом витка #include <graphics.h> #include <stdlib.h> #include <iostream.h> #include <conio.h> #include <math.h> int main() { double x = 0; double y = 0; double angle = 0; double a = 15; //Расстояние между витками unsigned r0 = 75; //Размах первого виража double k = 0.01; //Коэффициент увиличения angle double radius = r0 + a * k; //Радиус, перекочевавший из полярной системы координат unsigned maxPoints = 10000; //число точек для соединений int gr = DETECT, gm; initgraph(&gr, &gm, ""); line(0, getmaxy()/2, getmaxx(), getmaxy()/2); //ось для красоты line(getmaxx()/2, 0, getmaxx()/2, getmaxy()); setcolor(RED); moveto(x+getmaxx()/2, y + getmaxy()/2); //обязательно позиционируемся в точку начала рисования for (int i = 0; i < maxPoints; i++) { angle = k * i; //На каждой итерации угол увеличиваем radius = r0 + a * angle; //Делаем корректировку на текущее значение угла x = radius * cos(-angle); y = radius * sin(-angle); lineto(x + getmaxx()/2 - r0, y+getmaxy()/2); //проводим линию } cin.get(); closegraph(); return 0; } |
некоторые так пишут. Этот параметр обозначает, что нет параметра. Это то же самое, что и int main()