.


:




:

































 

 

 

 


2,3.




 

: - .

 

- , . , , . , .. . , , - - , . .

, 220100 , , . , , - ( ) "" . (, ).

, , , - . : . . - .

. , Y Y=mX+b (,ROUND(Y)), ( ). , m=dY/dX m=dY, .. m. .., (I+1)=X(I)+1, Y(I+1)=Y(I)+m. . , . , m>1, p Y, . X Y , Y, - dX = dY/m = 1/m.

p :

: m - (-1<m<1);

(x1,y1) (x2,y2) - p ;

col - ;

_ (x,y,col) - col (x,y);

Round(x) - .

: pp.

1. 1 # x2 2 4.

2.m=(y2-y1)/(x2-x1); y=y1;

3. x 1 2 :

_(x,Round(y),col);

y=y+m;

4. y1=y2 5 6.

5._(x1,y1,col). 7.

6. ().

7..

- . 1965 , . : , y ( ) . ( 0 1) - () ( ). , . :

=2*(y2-y1)-(x2-x1),

x1,y1,x2,y2 - . e>=0 y , 2*(x2-x1), - y , e 2*(y2-y1). .

:

:

: (x1,y1,x2,y2)- ;

col - ;

_(x,y,col) - col (x,y);

sign(x) - , 1, >=0 -1, x<0;

round(x)- ;

abs(x) - , .

: pp.

1.: x=x1; y=y1; dx=abs(x2-x1); dy=abs(y2-y1);

s1=sign(x2-x1); s2=sign(y2-y1);

2. dy>dx 3, 4.

3. dx dy. l "". 5.

4.l "". 5.

5. 2*dy-dx.

6. i 1 dx :

_(x,y,col); e>=0 :

l="" x=x+s1 y=y+s2;

e=e-2*dx

l="" y=y+s2 x=x+s1; e=e+2*dy

7._(x,y,col).

8..

:

: (x1,y1,x2,y2)- ;

ol - ;

_ (x,y,col) - col (x,y);

sign(x) - , 1, >=0 -1, <0;

round(x) - ;

abs(x) - , ;

: pp.

1.: x=x1; y=y1; dx=abs(x2-x1); dy=abs(y2-y1);

s1=sign(x2-x1); s2=sign(y2-y1);

2. dy<dx l "" 4 3.

3. dx dy. l "". 4.

4. 2*dy-dx.

5. i 1 dx+dy :

_(x,y,col);

e<0 :

l="" y=y+s2 x=x+s1;

e=e+2*dy

:

l="" =+s1 y=y+s2;

e=e-2*dx

6._(x,y,col).

7..

. , X*X+Y*Y=R*R . , 0 R Y SQRT(R*R-X*X). . , . , R, , . , , ( 0 R/SQRT(2)). (, ). :

: rad -

col -

e -

_(x,y,col) - col (x,y)

: .

 

1.:x=0;y=rad;e=3-2*rad;

2. x<y :

_(x,y,col);

_(y,x,col);

_(y,-x,col);

_(x,-y,col);

_(-x,-y,col);

_(-y,-x,col);

_(-y,x,col);

_(-x,y,col)

3. <0 e=e+4*x+6 5 4.

4.: e=e+4*(x-y)+10; y=y-1

5.x=x+1 2 x<y 6.

6. x=y 7 8.

7.:

_(x,y,col);

_(y,x,col);

_(y,-x,col);

_(x,-y,col);

_(-x,-y,col);

_(-y,-x,col);

_(-y,x,col);

_(-x,y,col).

8..

1. PASCAL , : - .

2. , , , , 15 .

3. , : Y=+-SQRT(r*r-x*x) . ( - , - ; - ).

, 1-3 , .

:

{

. , , . . - 33h. . Intr(IntNo:Byte;varRegs:Registers) Dos. . , , .

}

program mouse;

uses Crt,Graph,Dos;

var

grDriver: Integer;

grMode: Integer;

ErrCode: Integer;

X,Y,X1,Y1:Integer;

L,M,R:Boolean;

BL:Boolean;

{

. () () }

function ReadMouse: Boolean;

var

r: Registers;

begin

r.ax:=0;

intr($33,r);

ReadMouse:=r.ax=$ffff;

end;

 

{ }

procedure ShowMouseCursor;

var

r:registers;

begin

r.ax:=1;

intr($33,r);

end;

 

{ ( )}

procedure HideMouseCursor;

var

r:registers;

begin

r.ax:=2;

intr($33,r);

end;

 

{ }

procedure ReadMouseStatus(var x,y:integer;var LB,MB,RB:boolean);

var

r:Registers;

begin

r.ax:=3;

intr($33,r);

x:=r.cx;

y:=r.dx;

LB:=(r.bx And 1) <> 0;

RB:=(r.bx And 2) <> 0;

MB:=(r.bx And 4) <> 0;

end;

 

{ }

procedure MoveMouseCursor(x,y:integer);

var r:registers;

begin

r.ax:=4;

r.cx:=x;

r.dx:=y;

intr($33,r);

end;

{

. , . -

}

begin

grDriver:= detect;

InitGraph(grDriver, grMode,'d:\tp7\bgi');

ErrCode:= GraphResult;

if ErrCode = grOk then

begin { Do graphics }

L:=false;M:=false;R:=false;Bl:=true;

SetColor(Cyan);

SetBKColor(LightGray);

if ReadMouse then begin

ShowMouseCursor;

While true do

begin

Repeat ReadMouseStatus (X,Y,L,M,R) Until L or R;

If R then begin

CloseGraph;

Exit end;

While L do ReadMouseStatus(X,Y,L,M,R);

if BL then

begin

X1:=X;Y1:=Y;

Bl:=false

end

else

begin

HideMouseCursor;

Line(X1,Y1,X,Y);

ShowMouseCursor;

Bl:=true

end;

end;

end

else

 

begin

RestoreCrtMode;Writeln('error');Halt;

end;

end

else

Writeln('Graphics error:', GraphErrorMsg(ErrCode));

end.

 

.

 

4. , , - .


1. , ?

2. ?

3. ?

4. Y ^2+Y^2=R^2? ?

5. ?

 

1. , . []: 2 . . 2 / . , . ; . . . ; . . . . . - .: , 1985. - 368c.: .

2. , . . [] / . . ; . . . . .; . . . , . . . - .: , 1989. - 503c.

3. , . . : , . [] / . . , . . . - .: -, 1996. - 287c.: .

4. , . . : [] / . . , . . , . . ; . . . . - .: , 1996. - 176c.: . - ( ).

 






:


: 2017-01-28; !; : 770 |


:

:

, .
==> ...

1537 - | 1307 -


© 2015-2024 lektsii.org - -

: 0.059 .