Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
Вопрос по Pascal |
Философия, технологии, алгоритмы! |
|
Опции темы |
01.05.2006, 12:13 | #2 |
not for sale...
Сообщений: 74
Регистрация: 04.09.2005
Возраст: 38
Не в сети |
нереально...
|
02.05.2006, 07:12 | #6 | |
Форумец
Сообщений: 13
Регистрация: 01.11.2005
Не в сети |
Цитата:
|
|
02.05.2006, 17:22 | #7 | ||
Форумец
Сообщений: 2,133
Регистрация: 24.04.2006
Возраст: 36
Не в сети |
Цитата:
Цитата:
|
||
02.05.2006, 18:36 | #8 |
Форумец
Сообщений: 13
Регистрация: 01.11.2005
Не в сети |
Вот как это выглядит для эллипса:
uses Crt, Graph; Function max(a, b: Integer): Integer; Begin max := a; If a < b Then max := b; End; const r1=150; r2=100; r2d = 180/Pi; ms = 50; type TGraphix = Object Constructor Init; Destructor Done; End; TEllipse = Object(TGraphix) a, b: integer; X0, Y0: Integer; Angle: Integer; Constructor Init(TheA, TheB, CoordX, CoordY: Integer); Destructor Done; Procedure Show(Visible: Boolean); Procedure Rotate; End; Constructor TGraphix.Init; Var GrDriver, GrMode, ErrCode: Integer; Begin GrDriver := Detect; InitGraph(GrDriver, GrMode, ''); ErrCode := GraphResult; If ErrCode <> grOk Then Fail; End; Destructor TGraphix.Done; Begin CloseGraph; End; Constructor TEllipse.Init(TheA, TheB, CoordX, CoordY: Integer); Begin If not Inherited Init Then Fail; a := TheA; b := TheB; X0 := CoordX; Y0 := CoordY; End; Destructor TEllipse.Done; Begin Inherited Done; End; Procedure TEllipse.Show(Visible: Boolean); Var Alpha, Phi, _X, _Y: Real; i, X, Y: Integer; Begin If Visible Then Begin Alpha := Angle/r2d; PutPixel(320, 240, White); For i := 0 To 359 Do Begin Phi := i / r2d; _X := a * Cos(phi); _Y := b * Sin(phi); X := Trunc(x0 + _X * Cos(Alpha) - _Y * Sin(Alpha)); Y := Trunc(y0 + _X * Sin(Alpha) + _Y * Cos(Alpha)); PutPixel(X, Y, White); End; End Else Begin SetFillStyle(SolidFill, GetBkColor); SetColor(Black); FillEllipse(X0, Y0, max(a, b)+10, max(a, b)+10); End; End; Procedure TEllipse.Rotate; Begin Show(False); Inc(Angle); Show(True); End; Var ell: TEllipse; begin If not ell.Init(r1, r2, 320, 240) Then Exit; Repeat ell.Rotate; Delay(ms); Until KeyPressed; While Keypressed Do ReadKey; ell.Done; end. |
04.05.2006, 15:33 | #12 | |
Альдо Апачи
Сообщений: 11,183
Регистрация: 21.06.2005
Возраст: 43
Не в сети |
Цитата:
|
|
05.05.2006, 11:06 | #15 |
Альдо Апачи
Сообщений: 11,183
Регистрация: 21.06.2005
Возраст: 43
Не в сети |
Из центра треугольника проводишь отрезок до одной из вершин. Вторая вершина будет на таком же расстоянии под углом 2/3Pi, третья - то же, но -2/3Pi. Соединяешь три получившихся точки - получил треугольник. А дальше циклично меняешь угол первого отрезка от 0 до бесконечности - все акуенно крутится.
|