|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alex Malashonok 2:4635/1024.64 10 Feb 2003 16:51:59 To : Sergey Andrianov Subject : Online компиляция формулы в пямять. -------------------------------------------------------------------------------- Сyббота Февраль 08 2003 12:30, Sergey Andrianov -> Nick Poroshin: NP>>>> Пpимеp: NP>>>> 1-+--+--+-2 изоуpовень pавен 3 NP>>>> | | NP>>>> | | код: 0011 ->таблица-> точки пеp. на стоpонах 2,3,4 NP>>>> *\ * находишь их (звёздочки) NP>>>> | \ /| таблица-> соединить 1 со 2, 2 с 3 NP>>>> | \ / | соединяешь NP>>>> 5-+--+-*--4 Вот сделал (ниже), никаких возражений? Особые случаи? {--------------------------------------------------------} uses graph; function f(x,y: real): real; begin f := 3*sqr(x)+4*sqr(y)-2*x*y+x-2*y; end; procedure DrawLine(x1,y1,x2,y2: real;c: integer); begin SetColor(c); Line(Round(x1*30)+320, Round(y1*30)+240, Round(x2*30)+320, Round(y2*30)+240); end; procedure DrawGrid; var x,y: real; begin x := - 10; while x < 10 do begin DrawLine(x, -10, x, 10, 4); x := x + 1; end; y := - 10; while y < 10 do begin DrawLine(-10, y, 10, y, 4); y := y + 1; end; DrawLine(-10, 0, 10, 0, 15); DrawLine(0, -10, 0, 10, 15); end; const xdet = 100; {детализация по Х} ydet = 100; {детализация по У} var i,j,a,b,t: integer; Matrix: array[0..xdet, 0..ydet] of real; xx: array[1..4] of real; yy: array[1..4] of real; tt, hx,hy,_f,_x,_y: real; begin a := Detect; InitGraph(a, b, '..\bgi\'); DrawGrid; tt := -1; while tt <= 2 do begin _f := f(tt,tt); hx := 20/(xdet+1); hy := 20/(ydet+1); _x := -10; for i := 0 to xdet do begin _y := -10; for j := 0 to ydet do begin Matrix[i,j] := f(_x, _y) - _f; if (i > 0) and (j > 0) then begin t := 0; if Matrix[i-1,j-1]*Matrix[i, j-1] < 0 then begin t := t or 1; xx[1] := _x - hx*abs(Matrix[i,j-1])/(abs(Matrix[i,j-1])+abs(Matrix[i-1,j-1])); yy[1] := _y - hy; end; if Matrix[i,j-1]*Matrix[i, j] < 0 then begin t := t or 2; xx[2] := _x; yy[2] := _y - hy*abs(Matrix[i,j])/(abs(Matrix[i,j])+abs(Matrix[i,j-1])); end; if Matrix[i-1,j]*Matrix[i, j] < 0 then begin t := t or 4; xx[3] := _x - hx*abs(Matrix[i,j])/(abs(Matrix[i,j])+abs(Matrix[i-1,j])); yy[3] := _y; end; if Matrix[i-1,j-1]*Matrix[i-1, j] < 0 then begin t := t or 8; xx[4] := _x - hx; yy[4] := _y - hy*abs(Matrix[i-1,j])/(abs(Matrix[i-1,j-1])+abs(Matrix[i-1,j])); end; case t of 3: DrawLine(xx[1], yy[1], xx[2], yy[2], 12); 5: DrawLine(xx[1], yy[1], xx[3], yy[3], 12); 6: DrawLine(xx[3], yy[3], xx[2], yy[2], 12); 9: DrawLine(xx[1], yy[1], xx[4], yy[4], 12); 10: DrawLine(xx[4], yy[4], xx[2], yy[2], 12); 12: DrawLine(xx[4], yy[4], xx[3], yy[3], 12); end; end; _y := _y + hy; end; _x := _x + hx; end; tt:=tt+0.3; end; readln; end. {--------------------------------------------------------} Alex --- Советую стереть эту строку... * Origin: С уважением, СПАМ.... (2:4635/1024.64) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/46023e47cb51.html, оценка из 5, голосов 10
|