Luxophia

Форк
0
/
Main.pas 
134 строки · 3.2 Кб
1
unit Main;
2

3
interface
4

5
uses
6
  System.SysUtils,
7
  System.Types,
8
  System.UITypes,
9
  System.Classes,
10
  System.Variants,
11
  FMX.Types, FMX.Controls,
12
  FMX.Forms,
13
  FMX.Graphics, FMX.Dialogs,
14
  System.Math.Vectors,
15
  FMX.Types3D,
16
  FMX.MaterialSources,
17
  FMX.StdCtrls, FMX.Edit,
18
  FMX.EditBox,
19
  FMX.SpinBox,
20
  FMX.Objects,
21
  FMX.Controls.Presentation,
22
  FMX.Objects3D,
23
  FMX.Controls3D,
24
  FMX.Viewport3D,
25
  LUX.FMX,
26
  Core;
27

28
type
29
  TForm1 = class(TForm)
30
    Viewport3D1: TViewport3D;
31
      Dummy1: TDummy;
32
        Dummy2: TDummy;
33
          Camera1: TCamera;
34
          Light1: TLight;
35
      Grid3D1: TGrid3D;
36
      StrokeCube1: TStrokeCube;
37
      LightMaterialSource1: TLightMaterialSource;
38
    Panel1: TPanel;
39
      Image1: TImage;
40
    SpinBox1: TSpinBox;
41
    Label1: TLabel;
42
    procedure FormCreate(Sender: TObject);
43
    procedure FormDestroy(Sender: TObject);
44
    procedure Viewport3D1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
45
    procedure Viewport3D1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single);
46
    procedure Viewport3D1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
47
    procedure SpinBox1Change(Sender: TObject);
48
  private
49
    { private �錾 }
50
    _MouseS :TShiftState;
51
    _MouseP :TPointF;
52
  public
53
    { public �錾 }
54
    _TeapotShape :TTeapotShape;
55
    _TensorShape :TTensorShape;
56
  end;
57

58
var
59
  Form1: TForm1;
60

61
implementation //############################################################### �¡
62

63
{$R *.fmx}
64

65
procedure TForm1.FormCreate(Sender: TObject);
66
begin
67
     _TeapotShape := TTeapotShape.Create( Self );
68
     _TensorShape := TTensorShape.Create( Self );
69

70
     with _TeapotShape do
71
     begin
72
          Parent   := Grid3D1;
73
          Material := LightMaterialSource1;
74
     end;
75

76
     with _TensorShape do
77
     begin
78
          Parent   := _TeapotShape;
79
          MeshData := _TeapotShape.Geometry;
80
          AxisLeng := 0.1;
81
     end;
82

83
     Image1.Bitmap.LoadFromFile( '..\..\_DATA\Texture.png' );
84

85
     LightMaterialSource1.Texture.Assign( Image1.Bitmap );
86

87
     SpinBox1Change( Self );
88
end;
89

90
procedure TForm1.FormDestroy(Sender: TObject);
91
begin
92
     /////
93
end;
94

95
//------------------------------------------------------------------------------
96

97
procedure TForm1.Viewport3D1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
98
begin
99
     _MouseS := Shift;
100
     _MouseP := TPointF.Create( X, Y );
101
end;
102

103
procedure TForm1.Viewport3D1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single);
104
var
105
   P :TPointF;
106
begin
107
     if ssLeft in _MouseS then
108
     begin
109
          P := TPointF.Create( X, Y );
110

111
          with Dummy1.RotationAngle do Y := Y + ( P.X - _MouseP.X );
112
          with Dummy2.RotationAngle do X := X - ( P.Y - _MouseP.Y );
113

114
          _MouseP := P;
115
     end;
116
end;
117

118
procedure TForm1.Viewport3D1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
119
begin
120
     Viewport3D1MouseMove( Sender, Shift, X, Y );
121

122
     _MouseS := [];
123
end;
124

125
//------------------------------------------------------------------------------
126

127
procedure TForm1.SpinBox1Change(Sender: TObject);
128
begin
129
     _TeapotShape.DivN := Round( SpinBox1.Value );
130

131
     _TensorShape.MakeShape;
132
end;
133

134
end. //######################################################################### �¡
135

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

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

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

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