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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| program graph010;
uses
crt, graph;
// pour deux points donnés, on veut trouver
// 1° l'équation de la droite passant par ces deux points
// 2° l'équation d'une droite perpendiculaire à la précédente
// et la coupant en un point donné
var
gd, gm: smallint;
x, y: real;
a, b, c, d: real;
x1, y1, x2, y2: real;
xs, ys: integer;
begin
//x1 := 0;
//y1 := 0;
//x2 := 3;
//y2 := 1;
clrscr;
write('x1='); readln(x1);
write('y1='); readln(y1);
write('x2='); readln(x2);
write('y2='); readln(y2);
a := (y2 - y1) / (x2 - x1);
b := y1 - a * x1;
c := -1 / a;
d := y2 - c * x2;
gd := vga;
gm := vgahi;
initgraph(gd, gm, '');
if graphresult = grok then
begin
setbkcolor(white);
cleardevice;
setcolor(darkgray);
rectangle(40, 40, 599, 439);
// repère
line(80, 240, 559, 240);
line(320, 80, 320, 399);
// titre
outTextXY(80, 80, 'Essai de l''unit'+chr(130)+' Graph');
// droite 1
x := -240;
repeat
y := a * x + b;
if (y >= -160) and (y < 160) then
begin
xs := trunc(x);
ys := trunc(y);
putpixel(xs + 320, 480 - (ys + 240), blue);
end;
x := x + 1/10;
until x >= 239;
// droite 2
x := -240;
repeat
y := c * x + d;
if (y >= -160) and (y < 160) then
begin
xs := trunc(x);
ys := trunc(y);
putpixel(xs + 320, 480 - (ys + 240), green);
end;
x := x + 1/10;
until x >= 239;
ReadKey;
CloseGraph;
end;
end. |
Partager