Ver Mensaje Individual
  #2  
Antiguo 16-06-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Reputación: 0
coso Va por buen camino
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
    { Private declarations }
  public
    { Public declarations }
  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));
//                z := Round(150*Sin((x + y)/100));
                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...
Responder Con Cita