⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oxnewtonutils.pas

📁 Newton Game Dynamic 1.52 Delphi下基于GLScene的OpenGL游戏开发控件。功能非常强大和易于使用。 Advanced physics engine for re
💻 PAS
📖 第 1 页 / 共 5 页
字号:
procedure oxVAroundY( var v: TOXVector3; alpha: Float );
var
  c, s, v0: Float;
begin
  SinCos( alpha, s, c );
  v0:= v[0];
  v[0]:= c * v0 + s * v[2];
  v[2]:= c * v[2] -s * v0;
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxVNegate(const v : TOXVector3) : TOXVector3;
begin
   Result[0]:= -v[0];
   Result[1]:= -v[1];
   Result[2]:= -v[2];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxVCrossProduct( const v1, v2 : TOXVector4 ) : TOXVector4; overload;
begin
   Result[0]:= v1[1] * v2[2] -v1[2] * v2[1];
   Result[1]:= v1[2] * v2[0] -v1[0] * v2[2];
   Result[2]:= v1[0] * v2[1] -v1[1] * v2[0];
   Result[3]:=0;
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxVCrossProduct( const v1, v2 : TOXVector3 ) : TOXVector3; overload;
begin
   Result[0]:= v1[1] * v2[2] -v1[2] * v2[1];
   Result[1]:= v1[2] * v2[0] -v1[0] * v2[2];
   Result[2]:= v1[0] * v2[1] -v1[1] * v2[0];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
procedure oxVCrossProduct( const v1, v2 : TOXVector3; var vr : TOXVector3 ); overload;
begin
   vr[0]:=v1[1]*v2[2]-v1[2]*v2[1];
   vr[1]:=v1[2]*v2[0]-v1[0]*v2[2];
   vr[2]:=v1[0]*v2[1]-v1[1]*v2[0];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxVDotProduct( const V1, V2 : TOXVector3 ) : Float; overload;
begin
  Result:= V1[0]*V2[0]+V1[1]*V2[1]+V1[2]*V2[2];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxVDotProduct( const V1, V2 : TOXVector4 ) : Float; overload;
begin
  Result:= V1[0]*V2[0]+V1[1]*V2[1]+V1[2]*V2[2]+V1[3]*V2[3];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
procedure oxSetM( var dest: TOXMatrix; const src : TOXMatrix );
var
   i : Integer;
begin
   for i:= xX to xW do begin
      dest[i, xX]:=src[i, xX];
      dest[i, xY]:=src[i, xY];
      dest[i, xZ]:=src[i, xZ];
      dest[i, xW]:=src[i, xW];
   end;
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
procedure oxTranslateM( var M : TOXMatrix; const v : TOXVector3 ); overload;
begin
   M[3][0]:=M[3][0]+v[0];
   M[3][1]:=M[3][1]+v[1];
   M[3][2]:=M[3][2]+v[2];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
procedure oxTranslateM( var M : TOXMatrix; const v : TOXVector4 ); overload;
begin
   M[3][0]:=M[3][0]+v[0];
   M[3][1]:=M[3][1]+v[1];
   M[3][2]:=M[3][2]+v[2];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxV4FToV4D( const fVec: TVector ): TOXVector4;
begin
  result[0]:= fVec[0];
  result[1]:= fVec[1];
  result[2]:= fVec[2];
  result[3]:= fVec[3];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxV4DToV4F( const dVec: TOXVector4 ): TVector;
begin
  result[0]:= dVec[0];
  result[1]:= dVec[1];
  result[2]:= dVec[2];
  result[3]:= dVec[3];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxV3FToV3D( const fVec: TVector3f ): TOXVector3;
begin
  result[0]:= fVec[0];
  result[1]:= fVec[1];
  result[2]:= fVec[2];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxV3DToV3F( const dVec: TOXVector3 ): TVector3f;
begin
  result[0]:= dVec[0];
  result[1]:= dVec[1];
  result[2]:= dVec[2];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
procedure oxScaleV( var v : TOXVector3; factor : Float ); overload;
begin
   v[0]:=v[0]*factor;
   v[1]:=v[1]*factor;
   v[2]:=v[2]*factor;
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
procedure oxScaleV( var v : TOXVector3; const factor : TOXVector3 ); overload;
begin
   v[0]:=v[0]*factor[0];
   v[1]:=v[1]*factor[1];
   v[2]:=v[2]*factor[2];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
procedure oxNormalizeV( var v : TOXVector3 ); overload;
var
   invLen: Float;
begin
   invLen:=RSqrt(oxVNorm(v));
   v[0]:=v[0]*invLen;
   v[1]:=v[1]*invLen;
   v[2]:=v[2]*invLen;
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
procedure oxNormalizeV( var v : TOXVector4 ); overload;
var
   invLen: Float;
begin
   invLen:=RSqrt(oxVNorm(v));
   v[0]:=v[0]*invLen;
   v[1]:=v[1]*invLen;
   v[2]:=v[2]*invLen;
   v[3]:=0;
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
procedure oxNormalizeM( var M : TOXMatrix );
begin
  M[0][3]:=0; oxNormalizeV(M[0]);
  M[1][3]:=0; oxNormalizeV(M[1]);
  M[2]:=oxVCrossProduct(M[0], M[1]);
  M[0]:=oxVCrossProduct(M[1], M[2]);
  M[3]:=WHmgVector;
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
procedure oxScaleV( var v : TOXVector4; factor : Float ); overload;
begin
   v[0]:=v[0]*factor;
   v[1]:=v[1]*factor;
   v[2]:=v[2]*factor;
   v[3]:=v[3]*factor;
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxVIsNull( const v : TOXVector4 ) : Boolean; overload;
begin
  Result:= ((v[0]=0) and (v[1]=0) and (v[2]=0));
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxVIsNull( const v : TOXVector3 ) : Boolean; overload;
begin
  Result:=((v[0]=0) and (v[1]=0) and (v[2]=0));
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
procedure oxScaleV( var v : TOXVector4; const factor : TOXVector4 ); overload;
begin
   v[0]:=v[0]*factor[0];
   v[1]:=v[1]*factor[1];
   v[2]:=v[2]*factor[2];
   v[3]:=v[3]*factor[3];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxMFToMD( const fMat: TMatrix ): TOXMatrix;
var dMat: TOXMatrix;
begin
  dMat[0, 0]:= fMat[0, 0];
  dMat[0, 1]:= fMat[0, 1];
  dMat[0, 2]:= fMat[0, 2];
  dMat[0, 3]:= fMat[0, 3];
  //
  dMat[1, 0]:= fMat[1, 0];
  dMat[1, 1]:= fMat[1, 1];
  dMat[1, 2]:= fMat[1, 2];
  dMat[1, 3]:= fMat[1, 3];
  //
  dMat[2, 0]:= fMat[2, 0];
  dMat[2, 1]:= fMat[2, 1];
  dMat[2, 2]:= fMat[2, 2];
  dMat[2, 3]:= fMat[2, 3];
  //
  dMat[3, 0]:= fMat[3, 0];
  dMat[3, 1]:= fMat[3, 1];
  dMat[3, 2]:= fMat[3, 2];
  dMat[3, 3]:= fMat[3, 3];
  result:= dMat;
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxMDToMF( const dMat: TOXMatrix ): TMatrix;
var fMat: TMatrix;
begin
  fMat[0, 0]:= dMat[0, 0];
  fMat[0, 1]:= dMat[0, 1];
  fMat[0, 2]:= dMat[0, 2];
  fMat[0, 3]:= dMat[0, 3];
  //
  fMat[1, 0]:= dMat[1, 0];
  fMat[1, 1]:= dMat[1, 1];
  fMat[1, 2]:= dMat[1, 2];
  fMat[1, 3]:= dMat[1, 3];
  //
  fMat[2, 0]:= dMat[2, 0];
  fMat[2, 1]:= dMat[2, 1];
  fMat[2, 2]:= dMat[2, 2];
  fMat[2, 3]:= dMat[2, 3];
  //
  fMat[3, 0]:= dMat[3, 0];
  fMat[3, 1]:= dMat[3, 1];
  fMat[3, 2]:= dMat[3, 2];
  fMat[3, 3]:= dMat[3, 3];
  result:= fMat;
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxVSubtract( const v1, v2 : TOXVector4 ): TOXVector4; overload;
begin
   Result[0]:=v1[0]-v2[0];
   Result[1]:=v1[1]-v2[1];
   Result[2]:=v1[2]-v2[2];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxVSubtract( const v1, v2 : TOXVector3 ): TOXVector3; overload;
begin
   Result[0]:=v1[0]-v2[0];
   Result[1]:=v1[1]-v2[1];
   Result[2]:=v1[2]-v2[2];
end;
{******************************************************************************}
// [15-9-2007]: Utils last change by Dave Gravel.                            //
{******************************************************************************}
function oxVScale( const v: TOXVector4; factor : Float ): TOXVector4; overload;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -