Show unit1.pas syntax highlighted
unit Unit1;
interface
{$I GLScene.inc}
uses
//VCL
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls,
//GLScene
GLCadencer, GLScene, GLObjects, GLMisc, GLWin32Viewer, GLTexture,
GLGeomObjects, GLMesh, VectorGeometry, VectorTypes, OpenGL1x,
//Stranger components
StrangeMathUtilities{$IFDEF STRANGE_INIFILE_SUPPORT}, StrangeIniObjects{$ENDIF};
type
TForm1 = class(TForm)
GLScene1: TGLScene;
GLSceneViewer1: TGLSceneViewer;
GLCamera1: TGLCamera;
cad: TGLCadencer;
GLLightSource1: TGLLightSource;
GLPlane1: TGLPlane;
GLSphere1: TGLSphere;
GLDirectOpenGL1: TGLDirectOpenGL;
GroupBox1: TGroupBox;
SafeDotRadioButton: TRadioButton;
LineLineDistRadioButton: TRadioButton;
XYRadioButton: TRadioButton;
AffineVectorArrayCenterRadioButton: TRadioButton;
Timer1: TTimer;
ResultLabel: TLabel;
Label1: TLabel;
NoneRadioButton: TRadioButton;
GLArrowLine1: TGLArrowLine;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure cadProgress(Sender: TObject; const DeltaTime, newTime: Double);
procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure GLDirectOpenGL1Render(Sender: TObject; var rci: TRenderContextInfo);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
mx, my: Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
//nothing here...
end;
procedure TForm1.cadProgress(Sender: TObject; const DeltaTime, newTime: Double);
begin
GLSceneViewer1.Invalidate;
end;
procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
mx := X;
my := Y;
end;
procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if not (ssRight in Shift) then
Exit;
GLCamera1.MoveAroundTarget(Y - my, X - mx);
my := Y;
mx := X;
end;
procedure TForm1.GLDirectOpenGL1Render(Sender: TObject; var rci: TRenderContextInfo);
var
A1, A2: TVector3f;
B1, B2: TVector3f;
C1, C2: TVector3f;
X1, X2, X: Tvector3f;
begin
//Testing function SafeDot
glDisable(GL_LIGHTING);
if SafeDotRadioButton.Checked then
begin
A1 := AffineVectorMake(-10, 0, 8);
A2 := AffineVectorMake(12, 0, -3);
glColor3b(50, 12, 127);
glbegin(GL_LINES);
glVertex3f(A1[0], A1[1], A1[2]);
glVertex3f(A2[0], A2[1], A2[2]);
glend;
X := SafeDot(A1, A2, GLSphere1.Position.AsAffineVector, GLSphere1.Radius + 2);
glColor3b(127, 50, 0);
glPointSize(10);
glbegin(GL_POINTS);
glVertex3f(X[0], X[1], X[2]);
glend;
GLSphere1.Visible := True;
end
else
begin
GLSphere1.Visible := False;
end;
//Testing function LineLineDist
if LineLineDistRadioButton.Checked then
begin
A1 := AffineVectorMake(-10, -10, -1);
A2 := AffineVectorMake(-19, 10, 0);
B1 := AffineVectorMake(19, -10, -1);
B2 := AffineVectorMake(10, 10, 0);
glColor3b(50, 12, 127);
glbegin(GL_LINES);
glVertex3f(A1[0], A1[1], A1[2]);
glVertex3f(A2[0], A2[1], A2[2]);
glend;
glbegin(GL_LINES);
glVertex3f(B1[0], B1[1], B1[2]);
glVertex3f(B2[0], B2[1], B2[2]);
glend;
ResultLabel.Caption := IntToStr(Round(LineLineDist(A1, A2, B1, B2, X1, X2)));
glColor3b(127, 127, 0);
glbegin(GL_LINES);
glVertex3f(x1[0], x1[1], x1[2]);
glVertex3f(x2[0], x2[1], x2[2]);
glend;
end;
//Testing function XY
if XYRadioButton.Checked then
begin
C1 := AffineVectorMake(-10, 20, 20);
C2 := AffineVectorMake(10, -10, -10);
X := XY(C1, C2, 2);
glColor3b(10, 52, 10);
glbegin(GL_LINES);
glVertex3f(C1[0], C1[1], C1[2]);
glVertex3f(C2[0], C2[1], C2[2]);
glend;
glPointSize(10);
glColor3b(127, 0, 0);
glbegin(GL_POINTS);
glVertex3f(X[0], X[1], X[2]);
glend;
end;
if AffineVectorArrayCenterRAdioButton.Checked then
begin
//Testing function AffineVectorArrayCenter
A1 := AffineVectorMake(-10, -10, -1);
A2 := AffineVectorMake(-19, 10, 0);
B1 := AffineVectorMake(19, -10, -1);
B2 := AffineVectorMake(10, 10, 0);
C1 := AffineVectorMake(-10, 20, 20);
C2 := AffineVectorMake(10, -10, -10);
glPointSize(4);
glColor3b(30, 112, 17);
glbegin(GL_POINTS);
glVertex3f(A1[0], A1[1], A1[2]);
glVertex3f(A2[0], A2[1], A2[2]);
glVertex3f(B1[0], B1[1], B1[2]);
glVertex3f(B2[0], B2[1], B2[2]);
glVertex3f(C1[0], C1[1], C1[2]);
glVertex3f(C2[0], C2[1], C2[2]);
glend;
X := AffineVectorArrayCenter([A1, A2, B1, B2, C1, C1]);
glColor3b(127, 50, 0);
glPointSize(10);
glbegin(GL_POINTS);
glVertex3f(X[0], X[1], X[2]);
glend;
end;
glenable(GL_LIGHTING);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Caption := 'StrangeMathUtilities Demo by Da Stranger (August ''2006) - ' + GLSceneViewer1.FramesPerSecondText;
GLSceneViewer1.ResetPerformanceMonitor;
end;
end.
See more files for this project here