te dejo un ejemplo para graficar funciones. Como ves, esta sacando las z de una funcion. Si tu creas un array donde colocas tu mapa de valores, entonces solo tendras q hacer z := mapa[x][y]; Esta funcion por eso es muy simple: pierde escala, etc... deberàs usar normalizadores varios (factores q multipliquen a las x e y en i,j) para tener una proyeccion más correcta.
Código Delphi
[-]
unit proyect;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure DrawLine(x,y,z : integer);
function Cl(z : integer; mx : integer) : TColor;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
uses math;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
x,y,z : integer;
begin
for y := 300 downto -300 do
for x := 600 downto -600 do
begin
z := Round(150*cos(PI*x/100)*sin(PI*y/200));
DrawLine(x,y,z);
Application.ProcessMessages;
end;
end;
procedure TForm1.DrawLine(x,y,z : integer);
var
cx,cy : integer;
i,j : integer;
begin
cx := Width div 2;
cy := Height div 2;
i := x - Round(-1.3*y) + cx;
j := cy - y;
Canvas.Pen.Color := Cl(z,150);
Canvas.MoveTo(i,j);
Canvas.LineTo(i,j-z)
end;
function TForm1.Cl(z : integer; mx : integer) : TColor;
begin
if z > 0 then
Cl := TColor(Round($FF*z/mx)*$000101)
else
Cl := TColor(Round($FF*-z/mx)*$010000);
end;
end.
me entretengo a ver si saco lo mismo con un array...