Собствено нужно построить шаровой сегмент.Размерность произвольная.
Добавлено через 13 мин.
Для начала хотел попробывать нарисовать эллипсную дугу,но почему-то не получается:
Program ris;
uses crt,graph;
var
driver,mode:integer;
x,y:integer;
xr.yr:word;
begA,endA:word;
begin
driver:detect;
initgraph (driver,mode,'d:\bp\bgi');
setcolor (4);
x:=100;
y:=200;
xr:=30;
yr:=30;
begA:=20;
endA:=20;
ellipse (x,y,begA,endA,xr,yr);
readln;
closegraph
end.
Штрих-пунктирную дугу можно нарисовать при помощи процедуры SetLineStyle или как-то по другому?
SetLineStyle влияет только на рисование отрезков, на кривые ее действие не распространяется. Придется тебе рисовать маленькие отрезки дуг в цикле.
Вот так, например:
Program ris;
uses crt,graph;
procedure DashedEllipse(X, Y: Integer; StAngle, EndAngle: Word;
XRadius, YRadius: Word);
const
angle = 10;
var
i, n: integer;
color: integer;
begin
n := (EndAngle - StAngle) div angle;
color := GetColor;
for i := 1 to n do begin { <--- Вот этот самый цикл }
if odd(i) then setcolor(color) else setcolor(getbkcolor);
Ellipse(X, Y, StAngle + pred(i) * angle, StAngle + i * angle,
XRadius, YRadius);
end;
setcolor(color);
end;
var
driver,mode:integer;
x,y:integer;
xr,yr:word;
begA,endA:word;
begin
driver:=detect;
initgraph(driver, mode, 'd:\bp\bgi');
setcolor(white);
x:=100;
y:=200;
xr:=30;
yr:=30;
begA:=20;
endA:=220;
dashedellipse(x, y, begA, endA, xr, yr);
readln;
closegraph
end.
Никак не получается добавить цикл в:
Program segment;
uses crt,graph;
var
driver,mode:integer;
x,y:integer;
r,rx,ry:word;
begA,endA:word;
begin
clrscr;
driver:=detect;
initgraph (driver,mode,'d:\bp\bgi');
setcolor (15);
x:=320;
y:=240;
r:=100;
begA:=30;
endA:=150;
arc (x.y.begA,endA,r);
begA:=195;
endA:=347;
rx:=90;
ry:=40;
y:=180;
r:=50;
ellipse (x,y,begA,endA,rx,ry);
begA:=14;
endA:=165;
y:=200;
ellipse (x,y,begA,endA,rx,ry);{эту дугу хотелось бы увидеть штрих-пунктирной}
readln;
end.