ArenaZ

Форк
0
/
mainX.pas 
86 строк · 2.0 Кб
1
unit mainX;
2

3

4

5
interface
6

7
uses
8

9
  LCLIntf, LCLType, SysUtils, Variants, Classes, Graphics, Controls, Forms,
10
  Dialogs, GLScene, GLGraph, GLObjects, GLAsyncTimer, GLLCLViewer,
11
  GLVectorGeometry,
12
  GLTexture, GLVectorTypes, GLCadencer, StdCtrls, ExtCtrls,
13
  GLCoordinates, GLCrossPlatform, GLBaseClasses;
14

15
type
16
  TForm4 = class(TForm)
17
    GLSceneViewer1: TGLSceneViewer;
18
    GLScene1: TGLScene;
19
    GLAsyncTimer1: TGLAsyncTimer;
20
    GLCamera1: TGLCamera;
21
    GLDummyCube1: TGLDummyCube;
22
    GLLightSource1: TGLLightSource;
23
    GLHeightField1: TGLHeightField;
24
    GLCube1: TGLCube;
25
    Button1: TButton;
26
    procedure FormCreate(Sender: TObject);
27
    procedure GLHeightField1GetHeight(const x, y: Single; var z: Single;
28
      var color: TVector4f; var texPoint: TTexPoint);
29
    procedure AsyncTimer1Timer(Sender: TObject);
30
    procedure Button1Click(Sender: TObject);
31
  private
32
    { Private declarations }
33
  public
34
    { Public declarations }
35
    t, w, v, pi, frq, gz, aX: Single;
36
  end;
37

38
var
39
  Form4: TForm4;
40

41
implementation
42

43

44
  {$R *.lfm}
45

46
uses math;
47

48
procedure TForm4.FormCreate(Sender: TObject);
49
begin
50
  GLHeightField1.Material.Texture.Image.LoadFromFile
51
    (ExtractFilePath(Application.ExeName) + 'OPOCEAN2.JPG');
52
  GLHeightField1.StructureChanged;
53
  t := 0.0;
54
  v := 1.9;
55
  pi := 3.14;
56
  frq := 15;
57
  w := 2 * pi * v;
58
end;
59

60
procedure TForm4.GLHeightField1GetHeight(const x, y: Single; var z: Single;
61
  var color: TVector4f; var texPoint: TTexPoint);
62
begin
63
  z := VectorNorm(x, y);
64
  z := sin((w * t + y) - (z / frq)) + x / 2;
65
  gz := z;
66
  aX := x / 2;
67
end;
68

69
procedure TForm4.AsyncTimer1Timer(Sender: TObject);
70
begin
71
  t := t + 0.005;
72
  GLHeightField1.StructureChanged;
73
  GLCube1.Position.y := sin(w * t);
74
  GLCube1.PitchAngle := RadToDeg(-gz);
75
  GLCube1.TurnAngle := -aX * w;
76
  GLCube1.RollAngle := -aX * w;
77
end;
78

79
procedure TForm4.Button1Click(Sender: TObject);
80
begin
81
  GLAsyncTimer1.Enabled := False;
82
  Application.ProcessMessages;
83
  Close;
84
end;
85

86
end.
87

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.