Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2008, 08:19   #1
Mikhail Bakurov
Форумчанин
 
Регистрация: 12.10.2008
Сообщений: 140
По умолчанию Как построить 3-х мерный график?

В программе необходимо выводить данные в 3-х мерный график.
Подскажите пожалуйста возможные варианты, как это можно реализовать... не код, а просто варианты....
Есть ли возможность обойтись без изучения OpenGL?
Mikhail Bakurov вне форума Ответить с цитированием
Старый 30.11.2008, 09:42   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

компонент Chart с этим неплохо справляется. там можно как 3D так и 2D строить
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 30.11.2008, 11:23   #3
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Вывод в изометрию:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function Calculate2DFor3D(x,y,z,X0,Y0:Double):TPoint;
begin
  result.X:=round(X0+(y-x)*sqrt(3)/2);
  Result.Y:=round(Y0+(x+y)/2-z);
end;

function f(x,y:Double):Double;
begin
  result:=sin(x/10)*cos(y/10)/(cos(x/10)*sin(y/10)+2)*10;
//  Result:=cos(x)*sin(x*y)*cos(x*y*x)*ln(x+y+1)*exp(sin(cos(x*y)));
end;



procedure TForm1.FormPaint(Sender: TObject);
var
  X0, Y0:Integer;
  point:TPoint;
  x,y,
  xMin, yMin,
  xMax, yMax,
  xStep, yStep:double;
begin
  X0:=ClientWidth div 2;
  Y0:=ClientHeight div 2;

  xMin:=0; yMin:=0;
  xMax:=200; yMax:=200;
  xStep:=5; ystep:=5;

  with Form1.Canvas do
  begin
    Pen.Color:=clGreen;
    MoveTo(X0,Y0); LineTo(X0,0);//ось Z
    MoveTo(X0,Y0); LineTo(0,round(Y0+X0*Sin(pi/6)/cos(pi/6)));//ось X
    MoveTo(X0,Y0); LineTo(ClientWidth,round(Y0+X0*Sin(pi/6)/cos(pi/6)));//ось Y
  end;
  Form1.Canvas.Pen.Color:=clRed;

  x:=xMin;
  while x<=xMax  do
  begin
    y:=yMin;
    point:=Calculate2DFor3D(x,y,f(x,y),X0, y0);
    Form1.Canvas.MoveTo(point.X, point.Y);
    y:=y+yStep;
    while y<=yMax do
    begin
      point:=Calculate2DFor3D(x,y,f(x,y),X0, y0);
      Form1.Canvas.LineTo(point.X, point.Y);
      Form1.Canvas.MoveTo(point.X, point.Y);
      y:=y+yStep;
    end;
    x:=x+xStep;
  end;

  y:=yMin;
  while y<=yMax  do
  begin
    x:=xMin;
    point:=Calculate2DFor3D(x,y,f(x,y),X0, y0);
    Form1.Canvas.MoveTo(point.X, point.Y);
    x:=x+xStep;
    while x<=xMax do
    begin
      point:=Calculate2DFor3D(x,y,f(x,y),X0, y0);
      Form1.Canvas.LineTo(point.X, point.Y);
      Form1.Canvas.MoveTo(point.X, point.Y);
      x:=x+xStep;
    end;
    y:=y+yStep;
  end;

end;

end.
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 01.12.2008, 05:37   #4
Mikhail Bakurov
Форумчанин
 
Регистрация: 12.10.2008
Сообщений: 140
По умолчанию

Спачибо огромное =) очень помогло
Mikhail Bakurov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как построить график Nijaz Общие вопросы Delphi 5 09.06.2014 11:25
Построить график функции Horknee Паскаль, Turbo Pascal, PascalABC.NET 15 23.09.2008 09:50
как построить график в паскале? Vitas1234 Паскаль, Turbo Pascal, PascalABC.NET 1 11.06.2008 16:53
построить график по формуле Prof Помощь студентам 1 02.06.2008 08:07