Напишите код, пожалуйста.
Надо, чтобы второй круг был меньше первого
Другие языки программирования и технологии
Как в паскале нарисовать круг, а вокруг него, чтобы вращался еще один круг?
по поводу вращения http://ru.wikipedia.org/wiki/Матрица_поворота
возможно, поворот сделан неправильно.
program circles;
uses graph, math;
var
gd, gm: integer;
centerx, centery : integer; {цент системы координат}
i,j : real; {x,y уравнения окружности x^2 + y^2 = r^2 }
r, r2 : real; {радиусы окружностей}
cx, cy : real; {координаты в системе координат}
oldcx, oldcy : real; {для вычисления новых координат при вращении}
eps: real; {шаг вычисления}
mastabx, mastaby: integer; {масштаб}
anglegrad : integer; {угол поворота в градусах}
anglerad : real; {угол поворота в радианах}
pi: real;
begin
{центром системы координат является точка 300,200}
centerx := 300;
centery := 200;
{масштаб по осям}
mastabx := 20;
mastaby := 20;
{выбранные радиусы}
r := 2.0;
r2 := 4.0;
eps := 0.01;
anglegrad := 1;
pi := 3.14 ;
{инициализация графики}
gd := D8bit;
gm := m640x480;
initgraph(gd, gm, '');
SetColor(cyan);
{отрисовка осей системы координат}
MoveTo(centerx, centery);
LineTo(centerx, 0);
MoveTo(centerx, centery);
LineTo(centerx, getmaxy);
MoveTo(centerx, centery);
LineTo(0, centery);
MoveTo(centerx, centery);
LineTo(getmaxx, centery);
Rectangle(10,10,50, 50);
putpixel(20,20,cyan);
{вращение}
while anglegrad <= 360 do
begin
anglerad := real(anglegrad) * pi;
anglerad := anglerad / real(180);
{отрисовка внутренней окружности}
i := 0.0;
while i <= r do
begin
j := sqrt( power(r, 2) - power(i, 2) );
cx := real(centerx) + mastabx * i;
cy := real(centery) + mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
cx := real(centerx) - mastabx * i;
cy := real(centery) + mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
cx := real(centerx) + mastabx * i;
cy := real(centery) - mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
cx := real(centerx) - mastabx * i;
cy := real(centery) - mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
i := i + eps;
end;
{отрисовка внешней окружности}
i := 0.0;
while i <= r2 do
begin
j := sqrt( power(r2, 2) - power(i, 2) );
{для поворота}
oldcx := i;
oldcy := j;
i := oldcx * cos(anglerad) - oldcy * sin(anglerad);
j := oldcx * sin(anglerad) + oldcy * cos(anglerad);
cx := real(centerx) + mastabx * i;
cy := real(centery) + mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
cx := real(centerx) - mastabx * i;
cy := real(centery) + mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
cx := real(centerx) + mastabx * i;
cy := real(centery) - mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
cx := real(centerx) - mastabx * i;
cy := real(centery) - mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
i := i + eps;
end;
anglegrad := anglegrad + 1;
end;
readln;
closegraph;
end.
возможно, поворот сделан неправильно.
program circles;
uses graph, math;
var
gd, gm: integer;
centerx, centery : integer; {цент системы координат}
i,j : real; {x,y уравнения окружности x^2 + y^2 = r^2 }
r, r2 : real; {радиусы окружностей}
cx, cy : real; {координаты в системе координат}
oldcx, oldcy : real; {для вычисления новых координат при вращении}
eps: real; {шаг вычисления}
mastabx, mastaby: integer; {масштаб}
anglegrad : integer; {угол поворота в градусах}
anglerad : real; {угол поворота в радианах}
pi: real;
begin
{центром системы координат является точка 300,200}
centerx := 300;
centery := 200;
{масштаб по осям}
mastabx := 20;
mastaby := 20;
{выбранные радиусы}
r := 2.0;
r2 := 4.0;
eps := 0.01;
anglegrad := 1;
pi := 3.14 ;
{инициализация графики}
gd := D8bit;
gm := m640x480;
initgraph(gd, gm, '');
SetColor(cyan);
{отрисовка осей системы координат}
MoveTo(centerx, centery);
LineTo(centerx, 0);
MoveTo(centerx, centery);
LineTo(centerx, getmaxy);
MoveTo(centerx, centery);
LineTo(0, centery);
MoveTo(centerx, centery);
LineTo(getmaxx, centery);
Rectangle(10,10,50, 50);
putpixel(20,20,cyan);
{вращение}
while anglegrad <= 360 do
begin
anglerad := real(anglegrad) * pi;
anglerad := anglerad / real(180);
{отрисовка внутренней окружности}
i := 0.0;
while i <= r do
begin
j := sqrt( power(r, 2) - power(i, 2) );
cx := real(centerx) + mastabx * i;
cy := real(centery) + mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
cx := real(centerx) - mastabx * i;
cy := real(centery) + mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
cx := real(centerx) + mastabx * i;
cy := real(centery) - mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
cx := real(centerx) - mastabx * i;
cy := real(centery) - mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
i := i + eps;
end;
{отрисовка внешней окружности}
i := 0.0;
while i <= r2 do
begin
j := sqrt( power(r2, 2) - power(i, 2) );
{для поворота}
oldcx := i;
oldcy := j;
i := oldcx * cos(anglerad) - oldcy * sin(anglerad);
j := oldcx * sin(anglerad) + oldcy * cos(anglerad);
cx := real(centerx) + mastabx * i;
cy := real(centery) + mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
cx := real(centerx) - mastabx * i;
cy := real(centery) + mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
cx := real(centerx) + mastabx * i;
cy := real(centery) - mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
cx := real(centerx) - mastabx * i;
cy := real(centery) - mastaby * j;
putpixel(ceil(cx),ceil(cy),cyan);
i := i + eps;
end;
anglegrad := anglegrad + 1;
end;
readln;
closegraph;
end.
____Ам@n ____
Это неправильный код
Похожие вопросы
- Как рисовать анимацию в Турбо Паскале??? Нужно создать рисунок на котором Земля вращается вокруг солнца
- Помогите в паскале нарисовать график y=e( в степени х)
- Как в Pascal ABC net можно переключать цвета у нарисованного круга? типо светофор
- нарисовать лестницу в паскале элементарную! нарисовать лестницу в паскале элементарную!
- вырезание картинки. как вырезать картинку по кругу, но что-бы вокруг круга была не белая область, а прозрачная?
- Заданы площади квадрата и круга. Определите, поместится ли квадрат в круге В ПАСКАЛЕ ПОЖ ПОМОГИТЕ
- нужна программа на Паскаль чтобы нарисовать флаг Америки. Помогите пожайлуста
- Аналог ассоциативного массива в Паскале.
- Я внутри написал, что я знаю про паскаль не то что решать и все такое а так теоретический в общем, смысл проги, я прав?
- ПАСКАЛЬ и ГРАФИКА