function TpvVector4.GetXX:TpvVector2;
begin
 result.x:=x;
 result.y:=x;
end;
function TpvVector4.GetXXX:TpvVector3;
begin
 result.x:=x;
 result.y:=x;
 result.z:=x;
end;
function TpvVector4.GetXXXX:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetXXXY:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=x;
 result.w:=y;
end;
function TpvVector4.GetXXXZ:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=x;
 result.w:=z;
end;
function TpvVector4.GetXXXW:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=x;
 result.w:=w;
end;
function TpvVector4.GetXXY:TpvVector3;
begin
 result.x:=x;
 result.y:=x;
 result.z:=y;
end;
function TpvVector4.GetXXYX:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=y;
 result.w:=x;
end;
function TpvVector4.GetXXYY:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetXXYZ:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=y;
 result.w:=z;
end;
function TpvVector4.GetXXYW:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=y;
 result.w:=w;
end;
function TpvVector4.GetXXZ:TpvVector3;
begin
 result.x:=x;
 result.y:=x;
 result.z:=z;
end;
function TpvVector4.GetXXZX:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=z;
 result.w:=x;
end;
function TpvVector4.GetXXZY:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=z;
 result.w:=y;
end;
function TpvVector4.GetXXZZ:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetXXZW:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=z;
 result.w:=w;
end;
function TpvVector4.GetXXW:TpvVector3;
begin
 result.x:=x;
 result.y:=x;
 result.z:=w;
end;
function TpvVector4.GetXXWX:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=w;
 result.w:=x;
end;
function TpvVector4.GetXXWY:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=w;
 result.w:=y;
end;
function TpvVector4.GetXXWZ:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=w;
 result.w:=z;
end;
function TpvVector4.GetXXWW:TpvVector4;
begin
 result.x:=x;
 result.y:=x;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetXY:TpvVector2;
begin
 result.x:=x;
 result.y:=y;
end;
procedure TpvVector4.SetXY(const pValue:TpvVector2);
begin
 x:=pValue.x;
 y:=pValue.y;
end;
function TpvVector4.GetXYX:TpvVector3;
begin
 result.x:=x;
 result.y:=y;
 result.z:=x;
end;
function TpvVector4.GetXYXX:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetXYXY:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=x;
 result.w:=y;
end;
function TpvVector4.GetXYXZ:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=x;
 result.w:=z;
end;
function TpvVector4.GetXYXW:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=x;
 result.w:=w;
end;
function TpvVector4.GetXYY:TpvVector3;
begin
 result.x:=x;
 result.y:=y;
 result.z:=y;
end;
function TpvVector4.GetXYYX:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=y;
 result.w:=x;
end;
function TpvVector4.GetXYYY:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetXYYZ:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=y;
 result.w:=z;
end;
function TpvVector4.GetXYYW:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=y;
 result.w:=w;
end;
function TpvVector4.GetXYZ:TpvVector3;
begin
 result.x:=x;
 result.y:=y;
 result.z:=z;
end;
procedure TpvVector4.SetXYZ(const pValue:TpvVector3);
begin
 x:=pValue.x;
 y:=pValue.y;
 z:=pValue.z;
end;
function TpvVector4.GetXYZX:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=z;
 result.w:=x;
end;
function TpvVector4.GetXYZY:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=z;
 result.w:=y;
end;
function TpvVector4.GetXYZZ:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetXYZW:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=z;
 result.w:=w;
end;
procedure TpvVector4.SetXYZW(const pValue:TpvVector4);
begin
 x:=pValue.x;
 y:=pValue.y;
 z:=pValue.z;
 w:=pValue.w;
end;
function TpvVector4.GetXYW:TpvVector3;
begin
 result.x:=x;
 result.y:=y;
 result.z:=w;
end;
procedure TpvVector4.SetXYW(const pValue:TpvVector3);
begin
 x:=pValue.x;
 y:=pValue.y;
 w:=pValue.z;
end;
function TpvVector4.GetXYWX:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=w;
 result.w:=x;
end;
function TpvVector4.GetXYWY:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=w;
 result.w:=y;
end;
function TpvVector4.GetXYWZ:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=w;
 result.w:=z;
end;
procedure TpvVector4.SetXYWZ(const pValue:TpvVector4);
begin
 x:=pValue.x;
 y:=pValue.y;
 w:=pValue.z;
 z:=pValue.w;
end;
function TpvVector4.GetXYWW:TpvVector4;
begin
 result.x:=x;
 result.y:=y;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetXZ:TpvVector2;
begin
 result.x:=x;
 result.y:=z;
end;
procedure TpvVector4.SetXZ(const pValue:TpvVector2);
begin
 x:=pValue.x;
 z:=pValue.y;
end;
function TpvVector4.GetXZX:TpvVector3;
begin
 result.x:=x;
 result.y:=z;
 result.z:=x;
end;
function TpvVector4.GetXZXX:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetXZXY:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=x;
 result.w:=y;
end;
function TpvVector4.GetXZXZ:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=x;
 result.w:=z;
end;
function TpvVector4.GetXZXW:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=x;
 result.w:=w;
end;
function TpvVector4.GetXZY:TpvVector3;
begin
 result.x:=x;
 result.y:=z;
 result.z:=y;
end;
procedure TpvVector4.SetXZY(const pValue:TpvVector3);
begin
 x:=pValue.x;
 z:=pValue.y;
 y:=pValue.z;
end;
function TpvVector4.GetXZYX:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=y;
 result.w:=x;
end;
function TpvVector4.GetXZYY:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetXZYZ:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=y;
 result.w:=z;
end;
function TpvVector4.GetXZYW:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=y;
 result.w:=w;
end;
procedure TpvVector4.SetXZYW(const pValue:TpvVector4);
begin
 x:=pValue.x;
 z:=pValue.y;
 y:=pValue.z;
 w:=pValue.w;
end;
function TpvVector4.GetXZZ:TpvVector3;
begin
 result.x:=x;
 result.y:=z;
 result.z:=z;
end;
function TpvVector4.GetXZZX:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=z;
 result.w:=x;
end;
function TpvVector4.GetXZZY:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=z;
 result.w:=y;
end;
function TpvVector4.GetXZZZ:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetXZZW:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=z;
 result.w:=w;
end;
function TpvVector4.GetXZW:TpvVector3;
begin
 result.x:=x;
 result.y:=z;
 result.z:=w;
end;
procedure TpvVector4.SetXZW(const pValue:TpvVector3);
begin
 x:=pValue.x;
 z:=pValue.y;
 w:=pValue.z;
end;
function TpvVector4.GetXZWX:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=w;
 result.w:=x;
end;
function TpvVector4.GetXZWY:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=w;
 result.w:=y;
end;
procedure TpvVector4.SetXZWY(const pValue:TpvVector4);
begin
 x:=pValue.x;
 z:=pValue.y;
 w:=pValue.z;
 y:=pValue.w;
end;
function TpvVector4.GetXZWZ:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=w;
 result.w:=z;
end;
function TpvVector4.GetXZWW:TpvVector4;
begin
 result.x:=x;
 result.y:=z;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetXW:TpvVector2;
begin
 result.x:=x;
 result.y:=w;
end;
procedure TpvVector4.SetXW(const pValue:TpvVector2);
begin
 x:=pValue.x;
 w:=pValue.y;
end;
function TpvVector4.GetXWX:TpvVector3;
begin
 result.x:=x;
 result.y:=w;
 result.z:=x;
end;
function TpvVector4.GetXWXX:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetXWXY:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=x;
 result.w:=y;
end;
function TpvVector4.GetXWXZ:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=x;
 result.w:=z;
end;
function TpvVector4.GetXWXW:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=x;
 result.w:=w;
end;
function TpvVector4.GetXWY:TpvVector3;
begin
 result.x:=x;
 result.y:=w;
 result.z:=y;
end;
procedure TpvVector4.SetXWY(const pValue:TpvVector3);
begin
 x:=pValue.x;
 w:=pValue.y;
 y:=pValue.z;
end;
function TpvVector4.GetXWYX:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=y;
 result.w:=x;
end;
function TpvVector4.GetXWYY:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetXWYZ:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=y;
 result.w:=z;
end;
procedure TpvVector4.SetXWYZ(const pValue:TpvVector4);
begin
 x:=pValue.x;
 w:=pValue.y;
 y:=pValue.z;
 z:=pValue.w;
end;
function TpvVector4.GetXWYW:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=y;
 result.w:=w;
end;
function TpvVector4.GetXWZ:TpvVector3;
begin
 result.x:=x;
 result.y:=w;
 result.z:=z;
end;
procedure TpvVector4.SetXWZ(const pValue:TpvVector3);
begin
 x:=pValue.x;
 w:=pValue.y;
 z:=pValue.z;
end;
function TpvVector4.GetXWZX:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=z;
 result.w:=x;
end;
function TpvVector4.GetXWZY:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=z;
 result.w:=y;
end;
procedure TpvVector4.SetXWZY(const pValue:TpvVector4);
begin
 x:=pValue.x;
 w:=pValue.y;
 z:=pValue.z;
 y:=pValue.w;
end;
function TpvVector4.GetXWZZ:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetXWZW:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=z;
 result.w:=w;
end;
function TpvVector4.GetXWW:TpvVector3;
begin
 result.x:=x;
 result.y:=w;
 result.z:=w;
end;
function TpvVector4.GetXWWX:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=w;
 result.w:=x;
end;
function TpvVector4.GetXWWY:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=w;
 result.w:=y;
end;
function TpvVector4.GetXWWZ:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=w;
 result.w:=z;
end;
function TpvVector4.GetXWWW:TpvVector4;
begin
 result.x:=x;
 result.y:=w;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetYX:TpvVector2;
begin
 result.x:=y;
 result.y:=x;
end;
procedure TpvVector4.SetYX(const pValue:TpvVector2);
begin
 y:=pValue.x;
 x:=pValue.y;
end;
function TpvVector4.GetYXX:TpvVector3;
begin
 result.x:=y;
 result.y:=x;
 result.z:=x;
end;
function TpvVector4.GetYXXX:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetYXXY:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=x;
 result.w:=y;
end;
function TpvVector4.GetYXXZ:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=x;
 result.w:=z;
end;
function TpvVector4.GetYXXW:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=x;
 result.w:=w;
end;
function TpvVector4.GetYXY:TpvVector3;
begin
 result.x:=y;
 result.y:=x;
 result.z:=y;
end;
function TpvVector4.GetYXYX:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=y;
 result.w:=x;
end;
function TpvVector4.GetYXYY:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetYXYZ:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=y;
 result.w:=z;
end;
function TpvVector4.GetYXYW:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=y;
 result.w:=w;
end;
function TpvVector4.GetYXZ:TpvVector3;
begin
 result.x:=y;
 result.y:=x;
 result.z:=z;
end;
procedure TpvVector4.SetYXZ(const pValue:TpvVector3);
begin
 y:=pValue.x;
 x:=pValue.y;
 z:=pValue.z;
end;
function TpvVector4.GetYXZX:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=z;
 result.w:=x;
end;
function TpvVector4.GetYXZY:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=z;
 result.w:=y;
end;
function TpvVector4.GetYXZZ:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetYXZW:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=z;
 result.w:=w;
end;
procedure TpvVector4.SetYXZW(const pValue:TpvVector4);
begin
 y:=pValue.x;
 x:=pValue.y;
 z:=pValue.z;
 w:=pValue.w;
end;
function TpvVector4.GetYXW:TpvVector3;
begin
 result.x:=y;
 result.y:=x;
 result.z:=w;
end;
procedure TpvVector4.SetYXW(const pValue:TpvVector3);
begin
 y:=pValue.x;
 x:=pValue.y;
 w:=pValue.z;
end;
function TpvVector4.GetYXWX:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=w;
 result.w:=x;
end;
function TpvVector4.GetYXWY:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=w;
 result.w:=y;
end;
function TpvVector4.GetYXWZ:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=w;
 result.w:=z;
end;
procedure TpvVector4.SetYXWZ(const pValue:TpvVector4);
begin
 y:=pValue.x;
 x:=pValue.y;
 w:=pValue.z;
 z:=pValue.w;
end;
function TpvVector4.GetYXWW:TpvVector4;
begin
 result.x:=y;
 result.y:=x;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetYY:TpvVector2;
begin
 result.x:=y;
 result.y:=y;
end;
function TpvVector4.GetYYX:TpvVector3;
begin
 result.x:=y;
 result.y:=y;
 result.z:=x;
end;
function TpvVector4.GetYYXX:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetYYXY:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=x;
 result.w:=y;
end;
function TpvVector4.GetYYXZ:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=x;
 result.w:=z;
end;
function TpvVector4.GetYYXW:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=x;
 result.w:=w;
end;
function TpvVector4.GetYYY:TpvVector3;
begin
 result.x:=y;
 result.y:=y;
 result.z:=y;
end;
function TpvVector4.GetYYYX:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=y;
 result.w:=x;
end;
function TpvVector4.GetYYYY:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetYYYZ:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=y;
 result.w:=z;
end;
function TpvVector4.GetYYYW:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=y;
 result.w:=w;
end;
function TpvVector4.GetYYZ:TpvVector3;
begin
 result.x:=y;
 result.y:=y;
 result.z:=z;
end;
function TpvVector4.GetYYZX:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=z;
 result.w:=x;
end;
function TpvVector4.GetYYZY:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=z;
 result.w:=y;
end;
function TpvVector4.GetYYZZ:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetYYZW:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=z;
 result.w:=w;
end;
function TpvVector4.GetYYW:TpvVector3;
begin
 result.x:=y;
 result.y:=y;
 result.z:=w;
end;
function TpvVector4.GetYYWX:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=w;
 result.w:=x;
end;
function TpvVector4.GetYYWY:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=w;
 result.w:=y;
end;
function TpvVector4.GetYYWZ:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=w;
 result.w:=z;
end;
function TpvVector4.GetYYWW:TpvVector4;
begin
 result.x:=y;
 result.y:=y;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetYZ:TpvVector2;
begin
 result.x:=y;
 result.y:=z;
end;
procedure TpvVector4.SetYZ(const pValue:TpvVector2);
begin
 y:=pValue.x;
 z:=pValue.y;
end;
function TpvVector4.GetYZX:TpvVector3;
begin
 result.x:=y;
 result.y:=z;
 result.z:=x;
end;
procedure TpvVector4.SetYZX(const pValue:TpvVector3);
begin
 y:=pValue.x;
 z:=pValue.y;
 x:=pValue.z;
end;
function TpvVector4.GetYZXX:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetYZXY:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=x;
 result.w:=y;
end;
function TpvVector4.GetYZXZ:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=x;
 result.w:=z;
end;
function TpvVector4.GetYZXW:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=x;
 result.w:=w;
end;
procedure TpvVector4.SetYZXW(const pValue:TpvVector4);
begin
 y:=pValue.x;
 z:=pValue.y;
 x:=pValue.z;
 w:=pValue.w;
end;
function TpvVector4.GetYZY:TpvVector3;
begin
 result.x:=y;
 result.y:=z;
 result.z:=y;
end;
function TpvVector4.GetYZYX:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=y;
 result.w:=x;
end;
function TpvVector4.GetYZYY:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetYZYZ:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=y;
 result.w:=z;
end;
function TpvVector4.GetYZYW:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=y;
 result.w:=w;
end;
function TpvVector4.GetYZZ:TpvVector3;
begin
 result.x:=y;
 result.y:=z;
 result.z:=z;
end;
function TpvVector4.GetYZZX:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=z;
 result.w:=x;
end;
function TpvVector4.GetYZZY:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=z;
 result.w:=y;
end;
function TpvVector4.GetYZZZ:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetYZZW:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=z;
 result.w:=w;
end;
function TpvVector4.GetYZW:TpvVector3;
begin
 result.x:=y;
 result.y:=z;
 result.z:=w;
end;
procedure TpvVector4.SetYZW(const pValue:TpvVector3);
begin
 y:=pValue.x;
 z:=pValue.y;
 w:=pValue.z;
end;
function TpvVector4.GetYZWX:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=w;
 result.w:=x;
end;
procedure TpvVector4.SetYZWX(const pValue:TpvVector4);
begin
 y:=pValue.x;
 z:=pValue.y;
 w:=pValue.z;
 x:=pValue.w;
end;
function TpvVector4.GetYZWY:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=w;
 result.w:=y;
end;
function TpvVector4.GetYZWZ:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=w;
 result.w:=z;
end;
function TpvVector4.GetYZWW:TpvVector4;
begin
 result.x:=y;
 result.y:=z;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetYW:TpvVector2;
begin
 result.x:=y;
 result.y:=w;
end;
procedure TpvVector4.SetYW(const pValue:TpvVector2);
begin
 y:=pValue.x;
 w:=pValue.y;
end;
function TpvVector4.GetYWX:TpvVector3;
begin
 result.x:=y;
 result.y:=w;
 result.z:=x;
end;
procedure TpvVector4.SetYWX(const pValue:TpvVector3);
begin
 y:=pValue.x;
 w:=pValue.y;
 x:=pValue.z;
end;
function TpvVector4.GetYWXX:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetYWXY:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=x;
 result.w:=y;
end;
function TpvVector4.GetYWXZ:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=x;
 result.w:=z;
end;
procedure TpvVector4.SetYWXZ(const pValue:TpvVector4);
begin
 y:=pValue.x;
 w:=pValue.y;
 x:=pValue.z;
 z:=pValue.w;
end;
function TpvVector4.GetYWXW:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=x;
 result.w:=w;
end;
function TpvVector4.GetYWY:TpvVector3;
begin
 result.x:=y;
 result.y:=w;
 result.z:=y;
end;
function TpvVector4.GetYWYX:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=y;
 result.w:=x;
end;
function TpvVector4.GetYWYY:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetYWYZ:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=y;
 result.w:=z;
end;
function TpvVector4.GetYWYW:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=y;
 result.w:=w;
end;
function TpvVector4.GetYWZ:TpvVector3;
begin
 result.x:=y;
 result.y:=w;
 result.z:=z;
end;
procedure TpvVector4.SetYWZ(const pValue:TpvVector3);
begin
 y:=pValue.x;
 w:=pValue.y;
 z:=pValue.z;
end;
function TpvVector4.GetYWZX:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=z;
 result.w:=x;
end;
procedure TpvVector4.SetYWZX(const pValue:TpvVector4);
begin
 y:=pValue.x;
 w:=pValue.y;
 z:=pValue.z;
 x:=pValue.w;
end;
function TpvVector4.GetYWZY:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=z;
 result.w:=y;
end;
function TpvVector4.GetYWZZ:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetYWZW:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=z;
 result.w:=w;
end;
function TpvVector4.GetYWW:TpvVector3;
begin
 result.x:=y;
 result.y:=w;
 result.z:=w;
end;
function TpvVector4.GetYWWX:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=w;
 result.w:=x;
end;
function TpvVector4.GetYWWY:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=w;
 result.w:=y;
end;
function TpvVector4.GetYWWZ:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=w;
 result.w:=z;
end;
function TpvVector4.GetYWWW:TpvVector4;
begin
 result.x:=y;
 result.y:=w;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetZX:TpvVector2;
begin
 result.x:=z;
 result.y:=x;
end;
procedure TpvVector4.SetZX(const pValue:TpvVector2);
begin
 z:=pValue.x;
 x:=pValue.y;
end;
function TpvVector4.GetZXX:TpvVector3;
begin
 result.x:=z;
 result.y:=x;
 result.z:=x;
end;
function TpvVector4.GetZXXX:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetZXXY:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=x;
 result.w:=y;
end;
function TpvVector4.GetZXXZ:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=x;
 result.w:=z;
end;
function TpvVector4.GetZXXW:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=x;
 result.w:=w;
end;
function TpvVector4.GetZXY:TpvVector3;
begin
 result.x:=z;
 result.y:=x;
 result.z:=y;
end;
procedure TpvVector4.SetZXY(const pValue:TpvVector3);
begin
 z:=pValue.x;
 x:=pValue.y;
 y:=pValue.z;
end;
function TpvVector4.GetZXYX:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=y;
 result.w:=x;
end;
function TpvVector4.GetZXYY:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetZXYZ:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=y;
 result.w:=z;
end;
function TpvVector4.GetZXYW:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=y;
 result.w:=w;
end;
procedure TpvVector4.SetZXYW(const pValue:TpvVector4);
begin
 z:=pValue.x;
 x:=pValue.y;
 y:=pValue.z;
 w:=pValue.w;
end;
function TpvVector4.GetZXZ:TpvVector3;
begin
 result.x:=z;
 result.y:=x;
 result.z:=z;
end;
function TpvVector4.GetZXZX:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=z;
 result.w:=x;
end;
function TpvVector4.GetZXZY:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=z;
 result.w:=y;
end;
function TpvVector4.GetZXZZ:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetZXZW:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=z;
 result.w:=w;
end;
function TpvVector4.GetZXW:TpvVector3;
begin
 result.x:=z;
 result.y:=x;
 result.z:=w;
end;
procedure TpvVector4.SetZXW(const pValue:TpvVector3);
begin
 z:=pValue.x;
 x:=pValue.y;
 w:=pValue.z;
end;
function TpvVector4.GetZXWX:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=w;
 result.w:=x;
end;
function TpvVector4.GetZXWY:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=w;
 result.w:=y;
end;
procedure TpvVector4.SetZXWY(const pValue:TpvVector4);
begin
 z:=pValue.x;
 x:=pValue.y;
 w:=pValue.z;
 y:=pValue.w;
end;
function TpvVector4.GetZXWZ:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=w;
 result.w:=z;
end;
function TpvVector4.GetZXWW:TpvVector4;
begin
 result.x:=z;
 result.y:=x;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetZY:TpvVector2;
begin
 result.x:=z;
 result.y:=y;
end;
procedure TpvVector4.SetZY(const pValue:TpvVector2);
begin
 z:=pValue.x;
 y:=pValue.y;
end;
function TpvVector4.GetZYX:TpvVector3;
begin
 result.x:=z;
 result.y:=y;
 result.z:=x;
end;
procedure TpvVector4.SetZYX(const pValue:TpvVector3);
begin
 z:=pValue.x;
 y:=pValue.y;
 x:=pValue.z;
end;
function TpvVector4.GetZYXX:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetZYXY:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=x;
 result.w:=y;
end;
function TpvVector4.GetZYXZ:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=x;
 result.w:=z;
end;
function TpvVector4.GetZYXW:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=x;
 result.w:=w;
end;
procedure TpvVector4.SetZYXW(const pValue:TpvVector4);
begin
 z:=pValue.x;
 y:=pValue.y;
 x:=pValue.z;
 w:=pValue.w;
end;
function TpvVector4.GetZYY:TpvVector3;
begin
 result.x:=z;
 result.y:=y;
 result.z:=y;
end;
function TpvVector4.GetZYYX:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=y;
 result.w:=x;
end;
function TpvVector4.GetZYYY:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetZYYZ:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=y;
 result.w:=z;
end;
function TpvVector4.GetZYYW:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=y;
 result.w:=w;
end;
function TpvVector4.GetZYZ:TpvVector3;
begin
 result.x:=z;
 result.y:=y;
 result.z:=z;
end;
function TpvVector4.GetZYZX:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=z;
 result.w:=x;
end;
function TpvVector4.GetZYZY:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=z;
 result.w:=y;
end;
function TpvVector4.GetZYZZ:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetZYZW:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=z;
 result.w:=w;
end;
function TpvVector4.GetZYW:TpvVector3;
begin
 result.x:=z;
 result.y:=y;
 result.z:=w;
end;
procedure TpvVector4.SetZYW(const pValue:TpvVector3);
begin
 z:=pValue.x;
 y:=pValue.y;
 w:=pValue.z;
end;
function TpvVector4.GetZYWX:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=w;
 result.w:=x;
end;
procedure TpvVector4.SetZYWX(const pValue:TpvVector4);
begin
 z:=pValue.x;
 y:=pValue.y;
 w:=pValue.z;
 x:=pValue.w;
end;
function TpvVector4.GetZYWY:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=w;
 result.w:=y;
end;
function TpvVector4.GetZYWZ:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=w;
 result.w:=z;
end;
function TpvVector4.GetZYWW:TpvVector4;
begin
 result.x:=z;
 result.y:=y;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetZZ:TpvVector2;
begin
 result.x:=z;
 result.y:=z;
end;
function TpvVector4.GetZZX:TpvVector3;
begin
 result.x:=z;
 result.y:=z;
 result.z:=x;
end;
function TpvVector4.GetZZXX:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetZZXY:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=x;
 result.w:=y;
end;
function TpvVector4.GetZZXZ:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=x;
 result.w:=z;
end;
function TpvVector4.GetZZXW:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=x;
 result.w:=w;
end;
function TpvVector4.GetZZY:TpvVector3;
begin
 result.x:=z;
 result.y:=z;
 result.z:=y;
end;
function TpvVector4.GetZZYX:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=y;
 result.w:=x;
end;
function TpvVector4.GetZZYY:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetZZYZ:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=y;
 result.w:=z;
end;
function TpvVector4.GetZZYW:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=y;
 result.w:=w;
end;
function TpvVector4.GetZZZ:TpvVector3;
begin
 result.x:=z;
 result.y:=z;
 result.z:=z;
end;
function TpvVector4.GetZZZX:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=z;
 result.w:=x;
end;
function TpvVector4.GetZZZY:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=z;
 result.w:=y;
end;
function TpvVector4.GetZZZZ:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetZZZW:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=z;
 result.w:=w;
end;
function TpvVector4.GetZZW:TpvVector3;
begin
 result.x:=z;
 result.y:=z;
 result.z:=w;
end;
function TpvVector4.GetZZWX:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=w;
 result.w:=x;
end;
function TpvVector4.GetZZWY:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=w;
 result.w:=y;
end;
function TpvVector4.GetZZWZ:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=w;
 result.w:=z;
end;
function TpvVector4.GetZZWW:TpvVector4;
begin
 result.x:=z;
 result.y:=z;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetZW:TpvVector2;
begin
 result.x:=z;
 result.y:=w;
end;
procedure TpvVector4.SetZW(const pValue:TpvVector2);
begin
 z:=pValue.x;
 w:=pValue.y;
end;
function TpvVector4.GetZWX:TpvVector3;
begin
 result.x:=z;
 result.y:=w;
 result.z:=x;
end;
procedure TpvVector4.SetZWX(const pValue:TpvVector3);
begin
 z:=pValue.x;
 w:=pValue.y;
 x:=pValue.z;
end;
function TpvVector4.GetZWXX:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetZWXY:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=x;
 result.w:=y;
end;
procedure TpvVector4.SetZWXY(const pValue:TpvVector4);
begin
 z:=pValue.x;
 w:=pValue.y;
 x:=pValue.z;
 y:=pValue.w;
end;
function TpvVector4.GetZWXZ:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=x;
 result.w:=z;
end;
function TpvVector4.GetZWXW:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=x;
 result.w:=w;
end;
function TpvVector4.GetZWY:TpvVector3;
begin
 result.x:=z;
 result.y:=w;
 result.z:=y;
end;
procedure TpvVector4.SetZWY(const pValue:TpvVector3);
begin
 z:=pValue.x;
 w:=pValue.y;
 y:=pValue.z;
end;
function TpvVector4.GetZWYX:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=y;
 result.w:=x;
end;
procedure TpvVector4.SetZWYX(const pValue:TpvVector4);
begin
 z:=pValue.x;
 w:=pValue.y;
 y:=pValue.z;
 x:=pValue.w;
end;
function TpvVector4.GetZWYY:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetZWYZ:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=y;
 result.w:=z;
end;
function TpvVector4.GetZWYW:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=y;
 result.w:=w;
end;
function TpvVector4.GetZWZ:TpvVector3;
begin
 result.x:=z;
 result.y:=w;
 result.z:=z;
end;
function TpvVector4.GetZWZX:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=z;
 result.w:=x;
end;
function TpvVector4.GetZWZY:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=z;
 result.w:=y;
end;
function TpvVector4.GetZWZZ:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetZWZW:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=z;
 result.w:=w;
end;
function TpvVector4.GetZWW:TpvVector3;
begin
 result.x:=z;
 result.y:=w;
 result.z:=w;
end;
function TpvVector4.GetZWWX:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=w;
 result.w:=x;
end;
function TpvVector4.GetZWWY:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=w;
 result.w:=y;
end;
function TpvVector4.GetZWWZ:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=w;
 result.w:=z;
end;
function TpvVector4.GetZWWW:TpvVector4;
begin
 result.x:=z;
 result.y:=w;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetWX:TpvVector2;
begin
 result.x:=w;
 result.y:=x;
end;
procedure TpvVector4.SetWX(const pValue:TpvVector2);
begin
 w:=pValue.x;
 x:=pValue.y;
end;
function TpvVector4.GetWXX:TpvVector3;
begin
 result.x:=w;
 result.y:=x;
 result.z:=x;
end;
function TpvVector4.GetWXXX:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetWXXY:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=x;
 result.w:=y;
end;
function TpvVector4.GetWXXZ:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=x;
 result.w:=z;
end;
function TpvVector4.GetWXXW:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=x;
 result.w:=w;
end;
function TpvVector4.GetWXY:TpvVector3;
begin
 result.x:=w;
 result.y:=x;
 result.z:=y;
end;
procedure TpvVector4.SetWXY(const pValue:TpvVector3);
begin
 w:=pValue.x;
 x:=pValue.y;
 y:=pValue.z;
end;
function TpvVector4.GetWXYX:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=y;
 result.w:=x;
end;
function TpvVector4.GetWXYY:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetWXYZ:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=y;
 result.w:=z;
end;
procedure TpvVector4.SetWXYZ(const pValue:TpvVector4);
begin
 w:=pValue.x;
 x:=pValue.y;
 y:=pValue.z;
 z:=pValue.w;
end;
function TpvVector4.GetWXYW:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=y;
 result.w:=w;
end;
function TpvVector4.GetWXZ:TpvVector3;
begin
 result.x:=w;
 result.y:=x;
 result.z:=z;
end;
procedure TpvVector4.SetWXZ(const pValue:TpvVector3);
begin
 w:=pValue.x;
 x:=pValue.y;
 z:=pValue.z;
end;
function TpvVector4.GetWXZX:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=z;
 result.w:=x;
end;
function TpvVector4.GetWXZY:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=z;
 result.w:=y;
end;
procedure TpvVector4.SetWXZY(const pValue:TpvVector4);
begin
 w:=pValue.x;
 x:=pValue.y;
 z:=pValue.z;
 y:=pValue.w;
end;
function TpvVector4.GetWXZZ:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetWXZW:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=z;
 result.w:=w;
end;
function TpvVector4.GetWXW:TpvVector3;
begin
 result.x:=w;
 result.y:=x;
 result.z:=w;
end;
function TpvVector4.GetWXWX:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=w;
 result.w:=x;
end;
function TpvVector4.GetWXWY:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=w;
 result.w:=y;
end;
function TpvVector4.GetWXWZ:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=w;
 result.w:=z;
end;
function TpvVector4.GetWXWW:TpvVector4;
begin
 result.x:=w;
 result.y:=x;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetWY:TpvVector2;
begin
 result.x:=w;
 result.y:=y;
end;
procedure TpvVector4.SetWY(const pValue:TpvVector2);
begin
 w:=pValue.x;
 y:=pValue.y;
end;
function TpvVector4.GetWYX:TpvVector3;
begin
 result.x:=w;
 result.y:=y;
 result.z:=x;
end;
procedure TpvVector4.SetWYX(const pValue:TpvVector3);
begin
 w:=pValue.x;
 y:=pValue.y;
 x:=pValue.z;
end;
function TpvVector4.GetWYXX:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetWYXY:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=x;
 result.w:=y;
end;
function TpvVector4.GetWYXZ:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=x;
 result.w:=z;
end;
procedure TpvVector4.SetWYXZ(const pValue:TpvVector4);
begin
 w:=pValue.x;
 y:=pValue.y;
 x:=pValue.z;
 z:=pValue.w;
end;
function TpvVector4.GetWYXW:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=x;
 result.w:=w;
end;
function TpvVector4.GetWYY:TpvVector3;
begin
 result.x:=w;
 result.y:=y;
 result.z:=y;
end;
function TpvVector4.GetWYYX:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=y;
 result.w:=x;
end;
function TpvVector4.GetWYYY:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetWYYZ:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=y;
 result.w:=z;
end;
function TpvVector4.GetWYYW:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=y;
 result.w:=w;
end;
function TpvVector4.GetWYZ:TpvVector3;
begin
 result.x:=w;
 result.y:=y;
 result.z:=z;
end;
procedure TpvVector4.SetWYZ(const pValue:TpvVector3);
begin
 w:=pValue.x;
 y:=pValue.y;
 z:=pValue.z;
end;
function TpvVector4.GetWYZX:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=z;
 result.w:=x;
end;
procedure TpvVector4.SetWYZX(const pValue:TpvVector4);
begin
 w:=pValue.x;
 y:=pValue.y;
 z:=pValue.z;
 x:=pValue.w;
end;
function TpvVector4.GetWYZY:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=z;
 result.w:=y;
end;
function TpvVector4.GetWYZZ:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetWYZW:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=z;
 result.w:=w;
end;
function TpvVector4.GetWYW:TpvVector3;
begin
 result.x:=w;
 result.y:=y;
 result.z:=w;
end;
function TpvVector4.GetWYWX:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=w;
 result.w:=x;
end;
function TpvVector4.GetWYWY:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=w;
 result.w:=y;
end;
function TpvVector4.GetWYWZ:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=w;
 result.w:=z;
end;
function TpvVector4.GetWYWW:TpvVector4;
begin
 result.x:=w;
 result.y:=y;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetWZ:TpvVector2;
begin
 result.x:=w;
 result.y:=z;
end;
procedure TpvVector4.SetWZ(const pValue:TpvVector2);
begin
 w:=pValue.x;
 z:=pValue.y;
end;
function TpvVector4.GetWZX:TpvVector3;
begin
 result.x:=w;
 result.y:=z;
 result.z:=x;
end;
procedure TpvVector4.SetWZX(const pValue:TpvVector3);
begin
 w:=pValue.x;
 z:=pValue.y;
 x:=pValue.z;
end;
function TpvVector4.GetWZXX:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetWZXY:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=x;
 result.w:=y;
end;
procedure TpvVector4.SetWZXY(const pValue:TpvVector4);
begin
 w:=pValue.x;
 z:=pValue.y;
 x:=pValue.z;
 y:=pValue.w;
end;
function TpvVector4.GetWZXZ:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=x;
 result.w:=z;
end;
function TpvVector4.GetWZXW:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=x;
 result.w:=w;
end;
function TpvVector4.GetWZY:TpvVector3;
begin
 result.x:=w;
 result.y:=z;
 result.z:=y;
end;
procedure TpvVector4.SetWZY(const pValue:TpvVector3);
begin
 w:=pValue.x;
 z:=pValue.y;
 y:=pValue.z;
end;
function TpvVector4.GetWZYX:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=y;
 result.w:=x;
end;
procedure TpvVector4.SetWZYX(const pValue:TpvVector4);
begin
 w:=pValue.x;
 z:=pValue.y;
 y:=pValue.z;
 x:=pValue.w;
end;
function TpvVector4.GetWZYY:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetWZYZ:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=y;
 result.w:=z;
end;
function TpvVector4.GetWZYW:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=y;
 result.w:=w;
end;
function TpvVector4.GetWZZ:TpvVector3;
begin
 result.x:=w;
 result.y:=z;
 result.z:=z;
end;
function TpvVector4.GetWZZX:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=z;
 result.w:=x;
end;
function TpvVector4.GetWZZY:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=z;
 result.w:=y;
end;
function TpvVector4.GetWZZZ:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetWZZW:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=z;
 result.w:=w;
end;
function TpvVector4.GetWZW:TpvVector3;
begin
 result.x:=w;
 result.y:=z;
 result.z:=w;
end;
function TpvVector4.GetWZWX:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=w;
 result.w:=x;
end;
function TpvVector4.GetWZWY:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=w;
 result.w:=y;
end;
function TpvVector4.GetWZWZ:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=w;
 result.w:=z;
end;
function TpvVector4.GetWZWW:TpvVector4;
begin
 result.x:=w;
 result.y:=z;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetWW:TpvVector2;
begin
 result.x:=w;
 result.y:=w;
end;
function TpvVector4.GetWWX:TpvVector3;
begin
 result.x:=w;
 result.y:=w;
 result.z:=x;
end;
function TpvVector4.GetWWXX:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=x;
 result.w:=x;
end;
function TpvVector4.GetWWXY:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=x;
 result.w:=y;
end;
function TpvVector4.GetWWXZ:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=x;
 result.w:=z;
end;
function TpvVector4.GetWWXW:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=x;
 result.w:=w;
end;
function TpvVector4.GetWWY:TpvVector3;
begin
 result.x:=w;
 result.y:=w;
 result.z:=y;
end;
function TpvVector4.GetWWYX:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=y;
 result.w:=x;
end;
function TpvVector4.GetWWYY:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=y;
 result.w:=y;
end;
function TpvVector4.GetWWYZ:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=y;
 result.w:=z;
end;
function TpvVector4.GetWWYW:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=y;
 result.w:=w;
end;
function TpvVector4.GetWWZ:TpvVector3;
begin
 result.x:=w;
 result.y:=w;
 result.z:=z;
end;
function TpvVector4.GetWWZX:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=z;
 result.w:=x;
end;
function TpvVector4.GetWWZY:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=z;
 result.w:=y;
end;
function TpvVector4.GetWWZZ:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=z;
 result.w:=z;
end;
function TpvVector4.GetWWZW:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=z;
 result.w:=w;
end;
function TpvVector4.GetWWW:TpvVector3;
begin
 result.x:=w;
 result.y:=w;
 result.z:=w;
end;
function TpvVector4.GetWWWX:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=w;
 result.w:=x;
end;
function TpvVector4.GetWWWY:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=w;
 result.w:=y;
end;
function TpvVector4.GetWWWZ:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=w;
 result.w:=z;
end;
function TpvVector4.GetWWWW:TpvVector4;
begin
 result.x:=w;
 result.y:=w;
 result.z:=w;
 result.w:=w;
end;
function TpvVector4.GetRR:TpvVector2;
begin
 result.r:=r;
 result.g:=r;
end;
function TpvVector4.GetRRR:TpvVector3;
begin
 result.r:=r;
 result.g:=r;
 result.b:=r;
end;
function TpvVector4.GetRRRR:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetRRRG:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=r;
 result.a:=g;
end;
function TpvVector4.GetRRRB:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=r;
 result.a:=b;
end;
function TpvVector4.GetRRRA:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=r;
 result.a:=a;
end;
function TpvVector4.GetRRG:TpvVector3;
begin
 result.r:=r;
 result.g:=r;
 result.b:=g;
end;
function TpvVector4.GetRRGR:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=g;
 result.a:=r;
end;
function TpvVector4.GetRRGG:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetRRGB:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=g;
 result.a:=b;
end;
function TpvVector4.GetRRGA:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=g;
 result.a:=a;
end;
function TpvVector4.GetRRB:TpvVector3;
begin
 result.r:=r;
 result.g:=r;
 result.b:=b;
end;
function TpvVector4.GetRRBR:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=b;
 result.a:=r;
end;
function TpvVector4.GetRRBG:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=b;
 result.a:=g;
end;
function TpvVector4.GetRRBB:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetRRBA:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=b;
 result.a:=a;
end;
function TpvVector4.GetRRA:TpvVector3;
begin
 result.r:=r;
 result.g:=r;
 result.b:=a;
end;
function TpvVector4.GetRRAR:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=a;
 result.a:=r;
end;
function TpvVector4.GetRRAG:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=a;
 result.a:=g;
end;
function TpvVector4.GetRRAB:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=a;
 result.a:=b;
end;
function TpvVector4.GetRRAA:TpvVector4;
begin
 result.r:=r;
 result.g:=r;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetRG:TpvVector2;
begin
 result.r:=r;
 result.g:=g;
end;
procedure TpvVector4.SetRG(const pValue:TpvVector2);
begin
 r:=pValue.r;
 g:=pValue.g;
end;
function TpvVector4.GetRGR:TpvVector3;
begin
 result.r:=r;
 result.g:=g;
 result.b:=r;
end;
function TpvVector4.GetRGRR:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetRGRG:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=r;
 result.a:=g;
end;
function TpvVector4.GetRGRB:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=r;
 result.a:=b;
end;
function TpvVector4.GetRGRA:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=r;
 result.a:=a;
end;
function TpvVector4.GetRGG:TpvVector3;
begin
 result.r:=r;
 result.g:=g;
 result.b:=g;
end;
function TpvVector4.GetRGGR:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=g;
 result.a:=r;
end;
function TpvVector4.GetRGGG:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetRGGB:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=g;
 result.a:=b;
end;
function TpvVector4.GetRGGA:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=g;
 result.a:=a;
end;
function TpvVector4.GetRGB:TpvVector3;
begin
 result.r:=r;
 result.g:=g;
 result.b:=b;
end;
procedure TpvVector4.SetRGB(const pValue:TpvVector3);
begin
 r:=pValue.r;
 g:=pValue.g;
 b:=pValue.b;
end;
function TpvVector4.GetRGBR:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=b;
 result.a:=r;
end;
function TpvVector4.GetRGBG:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=b;
 result.a:=g;
end;
function TpvVector4.GetRGBB:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetRGBA:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=b;
 result.a:=a;
end;
procedure TpvVector4.SetRGBA(const pValue:TpvVector4);
begin
 r:=pValue.r;
 g:=pValue.g;
 b:=pValue.b;
 a:=pValue.a;
end;
function TpvVector4.GetRGA:TpvVector3;
begin
 result.r:=r;
 result.g:=g;
 result.b:=a;
end;
procedure TpvVector4.SetRGA(const pValue:TpvVector3);
begin
 r:=pValue.r;
 g:=pValue.g;
 a:=pValue.b;
end;
function TpvVector4.GetRGAR:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=a;
 result.a:=r;
end;
function TpvVector4.GetRGAG:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=a;
 result.a:=g;
end;
function TpvVector4.GetRGAB:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=a;
 result.a:=b;
end;
procedure TpvVector4.SetRGAB(const pValue:TpvVector4);
begin
 r:=pValue.r;
 g:=pValue.g;
 a:=pValue.b;
 b:=pValue.a;
end;
function TpvVector4.GetRGAA:TpvVector4;
begin
 result.r:=r;
 result.g:=g;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetRB:TpvVector2;
begin
 result.r:=r;
 result.g:=b;
end;
procedure TpvVector4.SetRB(const pValue:TpvVector2);
begin
 r:=pValue.r;
 b:=pValue.g;
end;
function TpvVector4.GetRBR:TpvVector3;
begin
 result.r:=r;
 result.g:=b;
 result.b:=r;
end;
function TpvVector4.GetRBRR:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetRBRG:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=r;
 result.a:=g;
end;
function TpvVector4.GetRBRB:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=r;
 result.a:=b;
end;
function TpvVector4.GetRBRA:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=r;
 result.a:=a;
end;
function TpvVector4.GetRBG:TpvVector3;
begin
 result.r:=r;
 result.g:=b;
 result.b:=g;
end;
procedure TpvVector4.SetRBG(const pValue:TpvVector3);
begin
 r:=pValue.r;
 b:=pValue.g;
 g:=pValue.b;
end;
function TpvVector4.GetRBGR:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=g;
 result.a:=r;
end;
function TpvVector4.GetRBGG:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetRBGB:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=g;
 result.a:=b;
end;
function TpvVector4.GetRBGA:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=g;
 result.a:=a;
end;
procedure TpvVector4.SetRBGA(const pValue:TpvVector4);
begin
 r:=pValue.r;
 b:=pValue.g;
 g:=pValue.b;
 a:=pValue.a;
end;
function TpvVector4.GetRBB:TpvVector3;
begin
 result.r:=r;
 result.g:=b;
 result.b:=b;
end;
function TpvVector4.GetRBBR:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=b;
 result.a:=r;
end;
function TpvVector4.GetRBBG:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=b;
 result.a:=g;
end;
function TpvVector4.GetRBBB:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetRBBA:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=b;
 result.a:=a;
end;
function TpvVector4.GetRBA:TpvVector3;
begin
 result.r:=r;
 result.g:=b;
 result.b:=a;
end;
procedure TpvVector4.SetRBA(const pValue:TpvVector3);
begin
 r:=pValue.r;
 b:=pValue.g;
 a:=pValue.b;
end;
function TpvVector4.GetRBAR:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=a;
 result.a:=r;
end;
function TpvVector4.GetRBAG:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=a;
 result.a:=g;
end;
procedure TpvVector4.SetRBAG(const pValue:TpvVector4);
begin
 r:=pValue.r;
 b:=pValue.g;
 a:=pValue.b;
 g:=pValue.a;
end;
function TpvVector4.GetRBAB:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=a;
 result.a:=b;
end;
function TpvVector4.GetRBAA:TpvVector4;
begin
 result.r:=r;
 result.g:=b;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetRA:TpvVector2;
begin
 result.r:=r;
 result.g:=a;
end;
procedure TpvVector4.SetRA(const pValue:TpvVector2);
begin
 r:=pValue.r;
 a:=pValue.g;
end;
function TpvVector4.GetRAR:TpvVector3;
begin
 result.r:=r;
 result.g:=a;
 result.b:=r;
end;
function TpvVector4.GetRARR:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetRARG:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=r;
 result.a:=g;
end;
function TpvVector4.GetRARB:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=r;
 result.a:=b;
end;
function TpvVector4.GetRARA:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=r;
 result.a:=a;
end;
function TpvVector4.GetRAG:TpvVector3;
begin
 result.r:=r;
 result.g:=a;
 result.b:=g;
end;
procedure TpvVector4.SetRAG(const pValue:TpvVector3);
begin
 r:=pValue.r;
 a:=pValue.g;
 g:=pValue.b;
end;
function TpvVector4.GetRAGR:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=g;
 result.a:=r;
end;
function TpvVector4.GetRAGG:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetRAGB:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=g;
 result.a:=b;
end;
procedure TpvVector4.SetRAGB(const pValue:TpvVector4);
begin
 r:=pValue.r;
 a:=pValue.g;
 g:=pValue.b;
 b:=pValue.a;
end;
function TpvVector4.GetRAGA:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=g;
 result.a:=a;
end;
function TpvVector4.GetRAB:TpvVector3;
begin
 result.r:=r;
 result.g:=a;
 result.b:=b;
end;
procedure TpvVector4.SetRAB(const pValue:TpvVector3);
begin
 r:=pValue.r;
 a:=pValue.g;
 b:=pValue.b;
end;
function TpvVector4.GetRABR:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=b;
 result.a:=r;
end;
function TpvVector4.GetRABG:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=b;
 result.a:=g;
end;
procedure TpvVector4.SetRABG(const pValue:TpvVector4);
begin
 r:=pValue.r;
 a:=pValue.g;
 b:=pValue.b;
 g:=pValue.a;
end;
function TpvVector4.GetRABB:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetRABA:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=b;
 result.a:=a;
end;
function TpvVector4.GetRAA:TpvVector3;
begin
 result.r:=r;
 result.g:=a;
 result.b:=a;
end;
function TpvVector4.GetRAAR:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=a;
 result.a:=r;
end;
function TpvVector4.GetRAAG:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=a;
 result.a:=g;
end;
function TpvVector4.GetRAAB:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=a;
 result.a:=b;
end;
function TpvVector4.GetRAAA:TpvVector4;
begin
 result.r:=r;
 result.g:=a;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetGR:TpvVector2;
begin
 result.r:=g;
 result.g:=r;
end;
procedure TpvVector4.SetGR(const pValue:TpvVector2);
begin
 g:=pValue.r;
 r:=pValue.g;
end;
function TpvVector4.GetGRR:TpvVector3;
begin
 result.r:=g;
 result.g:=r;
 result.b:=r;
end;
function TpvVector4.GetGRRR:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetGRRG:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=r;
 result.a:=g;
end;
function TpvVector4.GetGRRB:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=r;
 result.a:=b;
end;
function TpvVector4.GetGRRA:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=r;
 result.a:=a;
end;
function TpvVector4.GetGRG:TpvVector3;
begin
 result.r:=g;
 result.g:=r;
 result.b:=g;
end;
function TpvVector4.GetGRGR:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=g;
 result.a:=r;
end;
function TpvVector4.GetGRGG:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetGRGB:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=g;
 result.a:=b;
end;
function TpvVector4.GetGRGA:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=g;
 result.a:=a;
end;
function TpvVector4.GetGRB:TpvVector3;
begin
 result.r:=g;
 result.g:=r;
 result.b:=b;
end;
procedure TpvVector4.SetGRB(const pValue:TpvVector3);
begin
 g:=pValue.r;
 r:=pValue.g;
 b:=pValue.b;
end;
function TpvVector4.GetGRBR:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=b;
 result.a:=r;
end;
function TpvVector4.GetGRBG:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=b;
 result.a:=g;
end;
function TpvVector4.GetGRBB:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetGRBA:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=b;
 result.a:=a;
end;
procedure TpvVector4.SetGRBA(const pValue:TpvVector4);
begin
 g:=pValue.r;
 r:=pValue.g;
 b:=pValue.b;
 a:=pValue.a;
end;
function TpvVector4.GetGRA:TpvVector3;
begin
 result.r:=g;
 result.g:=r;
 result.b:=a;
end;
procedure TpvVector4.SetGRA(const pValue:TpvVector3);
begin
 g:=pValue.r;
 r:=pValue.g;
 a:=pValue.b;
end;
function TpvVector4.GetGRAR:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=a;
 result.a:=r;
end;
function TpvVector4.GetGRAG:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=a;
 result.a:=g;
end;
function TpvVector4.GetGRAB:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=a;
 result.a:=b;
end;
procedure TpvVector4.SetGRAB(const pValue:TpvVector4);
begin
 g:=pValue.r;
 r:=pValue.g;
 a:=pValue.b;
 b:=pValue.a;
end;
function TpvVector4.GetGRAA:TpvVector4;
begin
 result.r:=g;
 result.g:=r;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetGG:TpvVector2;
begin
 result.r:=g;
 result.g:=g;
end;
function TpvVector4.GetGGR:TpvVector3;
begin
 result.r:=g;
 result.g:=g;
 result.b:=r;
end;
function TpvVector4.GetGGRR:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetGGRG:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=r;
 result.a:=g;
end;
function TpvVector4.GetGGRB:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=r;
 result.a:=b;
end;
function TpvVector4.GetGGRA:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=r;
 result.a:=a;
end;
function TpvVector4.GetGGG:TpvVector3;
begin
 result.r:=g;
 result.g:=g;
 result.b:=g;
end;
function TpvVector4.GetGGGR:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=g;
 result.a:=r;
end;
function TpvVector4.GetGGGG:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetGGGB:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=g;
 result.a:=b;
end;
function TpvVector4.GetGGGA:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=g;
 result.a:=a;
end;
function TpvVector4.GetGGB:TpvVector3;
begin
 result.r:=g;
 result.g:=g;
 result.b:=b;
end;
function TpvVector4.GetGGBR:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=b;
 result.a:=r;
end;
function TpvVector4.GetGGBG:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=b;
 result.a:=g;
end;
function TpvVector4.GetGGBB:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetGGBA:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=b;
 result.a:=a;
end;
function TpvVector4.GetGGA:TpvVector3;
begin
 result.r:=g;
 result.g:=g;
 result.b:=a;
end;
function TpvVector4.GetGGAR:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=a;
 result.a:=r;
end;
function TpvVector4.GetGGAG:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=a;
 result.a:=g;
end;
function TpvVector4.GetGGAB:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=a;
 result.a:=b;
end;
function TpvVector4.GetGGAA:TpvVector4;
begin
 result.r:=g;
 result.g:=g;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetGB:TpvVector2;
begin
 result.r:=g;
 result.g:=b;
end;
procedure TpvVector4.SetGB(const pValue:TpvVector2);
begin
 g:=pValue.r;
 b:=pValue.g;
end;
function TpvVector4.GetGBR:TpvVector3;
begin
 result.r:=g;
 result.g:=b;
 result.b:=r;
end;
procedure TpvVector4.SetGBR(const pValue:TpvVector3);
begin
 g:=pValue.r;
 b:=pValue.g;
 r:=pValue.b;
end;
function TpvVector4.GetGBRR:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetGBRG:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=r;
 result.a:=g;
end;
function TpvVector4.GetGBRB:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=r;
 result.a:=b;
end;
function TpvVector4.GetGBRA:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=r;
 result.a:=a;
end;
procedure TpvVector4.SetGBRA(const pValue:TpvVector4);
begin
 g:=pValue.r;
 b:=pValue.g;
 r:=pValue.b;
 a:=pValue.a;
end;
function TpvVector4.GetGBG:TpvVector3;
begin
 result.r:=g;
 result.g:=b;
 result.b:=g;
end;
function TpvVector4.GetGBGR:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=g;
 result.a:=r;
end;
function TpvVector4.GetGBGG:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetGBGB:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=g;
 result.a:=b;
end;
function TpvVector4.GetGBGA:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=g;
 result.a:=a;
end;
function TpvVector4.GetGBB:TpvVector3;
begin
 result.r:=g;
 result.g:=b;
 result.b:=b;
end;
function TpvVector4.GetGBBR:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=b;
 result.a:=r;
end;
function TpvVector4.GetGBBG:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=b;
 result.a:=g;
end;
function TpvVector4.GetGBBB:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetGBBA:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=b;
 result.a:=a;
end;
function TpvVector4.GetGBA:TpvVector3;
begin
 result.r:=g;
 result.g:=b;
 result.b:=a;
end;
procedure TpvVector4.SetGBA(const pValue:TpvVector3);
begin
 g:=pValue.r;
 b:=pValue.g;
 a:=pValue.b;
end;
function TpvVector4.GetGBAR:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=a;
 result.a:=r;
end;
procedure TpvVector4.SetGBAR(const pValue:TpvVector4);
begin
 g:=pValue.r;
 b:=pValue.g;
 a:=pValue.b;
 r:=pValue.a;
end;
function TpvVector4.GetGBAG:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=a;
 result.a:=g;
end;
function TpvVector4.GetGBAB:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=a;
 result.a:=b;
end;
function TpvVector4.GetGBAA:TpvVector4;
begin
 result.r:=g;
 result.g:=b;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetGA:TpvVector2;
begin
 result.r:=g;
 result.g:=a;
end;
procedure TpvVector4.SetGA(const pValue:TpvVector2);
begin
 g:=pValue.r;
 a:=pValue.g;
end;
function TpvVector4.GetGAR:TpvVector3;
begin
 result.r:=g;
 result.g:=a;
 result.b:=r;
end;
procedure TpvVector4.SetGAR(const pValue:TpvVector3);
begin
 g:=pValue.r;
 a:=pValue.g;
 r:=pValue.b;
end;
function TpvVector4.GetGARR:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetGARG:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=r;
 result.a:=g;
end;
function TpvVector4.GetGARB:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=r;
 result.a:=b;
end;
procedure TpvVector4.SetGARB(const pValue:TpvVector4);
begin
 g:=pValue.r;
 a:=pValue.g;
 r:=pValue.b;
 b:=pValue.a;
end;
function TpvVector4.GetGARA:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=r;
 result.a:=a;
end;
function TpvVector4.GetGAG:TpvVector3;
begin
 result.r:=g;
 result.g:=a;
 result.b:=g;
end;
function TpvVector4.GetGAGR:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=g;
 result.a:=r;
end;
function TpvVector4.GetGAGG:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetGAGB:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=g;
 result.a:=b;
end;
function TpvVector4.GetGAGA:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=g;
 result.a:=a;
end;
function TpvVector4.GetGAB:TpvVector3;
begin
 result.r:=g;
 result.g:=a;
 result.b:=b;
end;
procedure TpvVector4.SetGAB(const pValue:TpvVector3);
begin
 g:=pValue.r;
 a:=pValue.g;
 b:=pValue.b;
end;
function TpvVector4.GetGABR:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=b;
 result.a:=r;
end;
procedure TpvVector4.SetGABR(const pValue:TpvVector4);
begin
 g:=pValue.r;
 a:=pValue.g;
 b:=pValue.b;
 r:=pValue.a;
end;
function TpvVector4.GetGABG:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=b;
 result.a:=g;
end;
function TpvVector4.GetGABB:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetGABA:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=b;
 result.a:=a;
end;
function TpvVector4.GetGAA:TpvVector3;
begin
 result.r:=g;
 result.g:=a;
 result.b:=a;
end;
function TpvVector4.GetGAAR:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=a;
 result.a:=r;
end;
function TpvVector4.GetGAAG:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=a;
 result.a:=g;
end;
function TpvVector4.GetGAAB:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=a;
 result.a:=b;
end;
function TpvVector4.GetGAAA:TpvVector4;
begin
 result.r:=g;
 result.g:=a;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetBR:TpvVector2;
begin
 result.r:=b;
 result.g:=r;
end;
procedure TpvVector4.SetBR(const pValue:TpvVector2);
begin
 b:=pValue.r;
 r:=pValue.g;
end;
function TpvVector4.GetBRR:TpvVector3;
begin
 result.r:=b;
 result.g:=r;
 result.b:=r;
end;
function TpvVector4.GetBRRR:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetBRRG:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=r;
 result.a:=g;
end;
function TpvVector4.GetBRRB:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=r;
 result.a:=b;
end;
function TpvVector4.GetBRRA:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=r;
 result.a:=a;
end;
function TpvVector4.GetBRG:TpvVector3;
begin
 result.r:=b;
 result.g:=r;
 result.b:=g;
end;
procedure TpvVector4.SetBRG(const pValue:TpvVector3);
begin
 b:=pValue.r;
 r:=pValue.g;
 g:=pValue.b;
end;
function TpvVector4.GetBRGR:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=g;
 result.a:=r;
end;
function TpvVector4.GetBRGG:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetBRGB:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=g;
 result.a:=b;
end;
function TpvVector4.GetBRGA:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=g;
 result.a:=a;
end;
procedure TpvVector4.SetBRGA(const pValue:TpvVector4);
begin
 b:=pValue.r;
 r:=pValue.g;
 g:=pValue.b;
 a:=pValue.a;
end;
function TpvVector4.GetBRB:TpvVector3;
begin
 result.r:=b;
 result.g:=r;
 result.b:=b;
end;
function TpvVector4.GetBRBR:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=b;
 result.a:=r;
end;
function TpvVector4.GetBRBG:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=b;
 result.a:=g;
end;
function TpvVector4.GetBRBB:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetBRBA:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=b;
 result.a:=a;
end;
function TpvVector4.GetBRA:TpvVector3;
begin
 result.r:=b;
 result.g:=r;
 result.b:=a;
end;
procedure TpvVector4.SetBRA(const pValue:TpvVector3);
begin
 b:=pValue.r;
 r:=pValue.g;
 a:=pValue.b;
end;
function TpvVector4.GetBRAR:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=a;
 result.a:=r;
end;
function TpvVector4.GetBRAG:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=a;
 result.a:=g;
end;
procedure TpvVector4.SetBRAG(const pValue:TpvVector4);
begin
 b:=pValue.r;
 r:=pValue.g;
 a:=pValue.b;
 g:=pValue.a;
end;
function TpvVector4.GetBRAB:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=a;
 result.a:=b;
end;
function TpvVector4.GetBRAA:TpvVector4;
begin
 result.r:=b;
 result.g:=r;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetBG:TpvVector2;
begin
 result.r:=b;
 result.g:=g;
end;
procedure TpvVector4.SetBG(const pValue:TpvVector2);
begin
 b:=pValue.r;
 g:=pValue.g;
end;
function TpvVector4.GetBGR:TpvVector3;
begin
 result.r:=b;
 result.g:=g;
 result.b:=r;
end;
procedure TpvVector4.SetBGR(const pValue:TpvVector3);
begin
 b:=pValue.r;
 g:=pValue.g;
 r:=pValue.b;
end;
function TpvVector4.GetBGRR:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetBGRG:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=r;
 result.a:=g;
end;
function TpvVector4.GetBGRB:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=r;
 result.a:=b;
end;
function TpvVector4.GetBGRA:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=r;
 result.a:=a;
end;
procedure TpvVector4.SetBGRA(const pValue:TpvVector4);
begin
 b:=pValue.r;
 g:=pValue.g;
 r:=pValue.b;
 a:=pValue.a;
end;
function TpvVector4.GetBGG:TpvVector3;
begin
 result.r:=b;
 result.g:=g;
 result.b:=g;
end;
function TpvVector4.GetBGGR:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=g;
 result.a:=r;
end;
function TpvVector4.GetBGGG:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetBGGB:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=g;
 result.a:=b;
end;
function TpvVector4.GetBGGA:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=g;
 result.a:=a;
end;
function TpvVector4.GetBGB:TpvVector3;
begin
 result.r:=b;
 result.g:=g;
 result.b:=b;
end;
function TpvVector4.GetBGBR:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=b;
 result.a:=r;
end;
function TpvVector4.GetBGBG:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=b;
 result.a:=g;
end;
function TpvVector4.GetBGBB:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetBGBA:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=b;
 result.a:=a;
end;
function TpvVector4.GetBGA:TpvVector3;
begin
 result.r:=b;
 result.g:=g;
 result.b:=a;
end;
procedure TpvVector4.SetBGA(const pValue:TpvVector3);
begin
 b:=pValue.r;
 g:=pValue.g;
 a:=pValue.b;
end;
function TpvVector4.GetBGAR:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=a;
 result.a:=r;
end;
procedure TpvVector4.SetBGAR(const pValue:TpvVector4);
begin
 b:=pValue.r;
 g:=pValue.g;
 a:=pValue.b;
 r:=pValue.a;
end;
function TpvVector4.GetBGAG:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=a;
 result.a:=g;
end;
function TpvVector4.GetBGAB:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=a;
 result.a:=b;
end;
function TpvVector4.GetBGAA:TpvVector4;
begin
 result.r:=b;
 result.g:=g;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetBB:TpvVector2;
begin
 result.r:=b;
 result.g:=b;
end;
function TpvVector4.GetBBR:TpvVector3;
begin
 result.r:=b;
 result.g:=b;
 result.b:=r;
end;
function TpvVector4.GetBBRR:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetBBRG:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=r;
 result.a:=g;
end;
function TpvVector4.GetBBRB:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=r;
 result.a:=b;
end;
function TpvVector4.GetBBRA:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=r;
 result.a:=a;
end;
function TpvVector4.GetBBG:TpvVector3;
begin
 result.r:=b;
 result.g:=b;
 result.b:=g;
end;
function TpvVector4.GetBBGR:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=g;
 result.a:=r;
end;
function TpvVector4.GetBBGG:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetBBGB:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=g;
 result.a:=b;
end;
function TpvVector4.GetBBGA:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=g;
 result.a:=a;
end;
function TpvVector4.GetBBB:TpvVector3;
begin
 result.r:=b;
 result.g:=b;
 result.b:=b;
end;
function TpvVector4.GetBBBR:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=b;
 result.a:=r;
end;
function TpvVector4.GetBBBG:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=b;
 result.a:=g;
end;
function TpvVector4.GetBBBB:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetBBBA:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=b;
 result.a:=a;
end;
function TpvVector4.GetBBA:TpvVector3;
begin
 result.r:=b;
 result.g:=b;
 result.b:=a;
end;
function TpvVector4.GetBBAR:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=a;
 result.a:=r;
end;
function TpvVector4.GetBBAG:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=a;
 result.a:=g;
end;
function TpvVector4.GetBBAB:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=a;
 result.a:=b;
end;
function TpvVector4.GetBBAA:TpvVector4;
begin
 result.r:=b;
 result.g:=b;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetBA:TpvVector2;
begin
 result.r:=b;
 result.g:=a;
end;
procedure TpvVector4.SetBA(const pValue:TpvVector2);
begin
 b:=pValue.r;
 a:=pValue.g;
end;
function TpvVector4.GetBAR:TpvVector3;
begin
 result.r:=b;
 result.g:=a;
 result.b:=r;
end;
procedure TpvVector4.SetBAR(const pValue:TpvVector3);
begin
 b:=pValue.r;
 a:=pValue.g;
 r:=pValue.b;
end;
function TpvVector4.GetBARR:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetBARG:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=r;
 result.a:=g;
end;
procedure TpvVector4.SetBARG(const pValue:TpvVector4);
begin
 b:=pValue.r;
 a:=pValue.g;
 r:=pValue.b;
 g:=pValue.a;
end;
function TpvVector4.GetBARB:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=r;
 result.a:=b;
end;
function TpvVector4.GetBARA:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=r;
 result.a:=a;
end;
function TpvVector4.GetBAG:TpvVector3;
begin
 result.r:=b;
 result.g:=a;
 result.b:=g;
end;
procedure TpvVector4.SetBAG(const pValue:TpvVector3);
begin
 b:=pValue.r;
 a:=pValue.g;
 g:=pValue.b;
end;
function TpvVector4.GetBAGR:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=g;
 result.a:=r;
end;
procedure TpvVector4.SetBAGR(const pValue:TpvVector4);
begin
 b:=pValue.r;
 a:=pValue.g;
 g:=pValue.b;
 r:=pValue.a;
end;
function TpvVector4.GetBAGG:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetBAGB:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=g;
 result.a:=b;
end;
function TpvVector4.GetBAGA:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=g;
 result.a:=a;
end;
function TpvVector4.GetBAB:TpvVector3;
begin
 result.r:=b;
 result.g:=a;
 result.b:=b;
end;
function TpvVector4.GetBABR:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=b;
 result.a:=r;
end;
function TpvVector4.GetBABG:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=b;
 result.a:=g;
end;
function TpvVector4.GetBABB:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetBABA:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=b;
 result.a:=a;
end;
function TpvVector4.GetBAA:TpvVector3;
begin
 result.r:=b;
 result.g:=a;
 result.b:=a;
end;
function TpvVector4.GetBAAR:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=a;
 result.a:=r;
end;
function TpvVector4.GetBAAG:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=a;
 result.a:=g;
end;
function TpvVector4.GetBAAB:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=a;
 result.a:=b;
end;
function TpvVector4.GetBAAA:TpvVector4;
begin
 result.r:=b;
 result.g:=a;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetAR:TpvVector2;
begin
 result.r:=a;
 result.g:=r;
end;
procedure TpvVector4.SetAR(const pValue:TpvVector2);
begin
 a:=pValue.r;
 r:=pValue.g;
end;
function TpvVector4.GetARR:TpvVector3;
begin
 result.r:=a;
 result.g:=r;
 result.b:=r;
end;
function TpvVector4.GetARRR:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetARRG:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=r;
 result.a:=g;
end;
function TpvVector4.GetARRB:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=r;
 result.a:=b;
end;
function TpvVector4.GetARRA:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=r;
 result.a:=a;
end;
function TpvVector4.GetARG:TpvVector3;
begin
 result.r:=a;
 result.g:=r;
 result.b:=g;
end;
procedure TpvVector4.SetARG(const pValue:TpvVector3);
begin
 a:=pValue.r;
 r:=pValue.g;
 g:=pValue.b;
end;
function TpvVector4.GetARGR:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=g;
 result.a:=r;
end;
function TpvVector4.GetARGG:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetARGB:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=g;
 result.a:=b;
end;
procedure TpvVector4.SetARGB(const pValue:TpvVector4);
begin
 a:=pValue.r;
 r:=pValue.g;
 g:=pValue.b;
 b:=pValue.a;
end;
function TpvVector4.GetARGA:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=g;
 result.a:=a;
end;
function TpvVector4.GetARB:TpvVector3;
begin
 result.r:=a;
 result.g:=r;
 result.b:=b;
end;
procedure TpvVector4.SetARB(const pValue:TpvVector3);
begin
 a:=pValue.r;
 r:=pValue.g;
 b:=pValue.b;
end;
function TpvVector4.GetARBR:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=b;
 result.a:=r;
end;
function TpvVector4.GetARBG:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=b;
 result.a:=g;
end;
procedure TpvVector4.SetARBG(const pValue:TpvVector4);
begin
 a:=pValue.r;
 r:=pValue.g;
 b:=pValue.b;
 g:=pValue.a;
end;
function TpvVector4.GetARBB:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetARBA:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=b;
 result.a:=a;
end;
function TpvVector4.GetARA:TpvVector3;
begin
 result.r:=a;
 result.g:=r;
 result.b:=a;
end;
function TpvVector4.GetARAR:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=a;
 result.a:=r;
end;
function TpvVector4.GetARAG:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=a;
 result.a:=g;
end;
function TpvVector4.GetARAB:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=a;
 result.a:=b;
end;
function TpvVector4.GetARAA:TpvVector4;
begin
 result.r:=a;
 result.g:=r;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetAG:TpvVector2;
begin
 result.r:=a;
 result.g:=g;
end;
procedure TpvVector4.SetAG(const pValue:TpvVector2);
begin
 a:=pValue.r;
 g:=pValue.g;
end;
function TpvVector4.GetAGR:TpvVector3;
begin
 result.r:=a;
 result.g:=g;
 result.b:=r;
end;
procedure TpvVector4.SetAGR(const pValue:TpvVector3);
begin
 a:=pValue.r;
 g:=pValue.g;
 r:=pValue.b;
end;
function TpvVector4.GetAGRR:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetAGRG:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=r;
 result.a:=g;
end;
function TpvVector4.GetAGRB:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=r;
 result.a:=b;
end;
procedure TpvVector4.SetAGRB(const pValue:TpvVector4);
begin
 a:=pValue.r;
 g:=pValue.g;
 r:=pValue.b;
 b:=pValue.a;
end;
function TpvVector4.GetAGRA:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=r;
 result.a:=a;
end;
function TpvVector4.GetAGG:TpvVector3;
begin
 result.r:=a;
 result.g:=g;
 result.b:=g;
end;
function TpvVector4.GetAGGR:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=g;
 result.a:=r;
end;
function TpvVector4.GetAGGG:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetAGGB:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=g;
 result.a:=b;
end;
function TpvVector4.GetAGGA:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=g;
 result.a:=a;
end;
function TpvVector4.GetAGB:TpvVector3;
begin
 result.r:=a;
 result.g:=g;
 result.b:=b;
end;
procedure TpvVector4.SetAGB(const pValue:TpvVector3);
begin
 a:=pValue.r;
 g:=pValue.g;
 b:=pValue.b;
end;
function TpvVector4.GetAGBR:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=b;
 result.a:=r;
end;
procedure TpvVector4.SetAGBR(const pValue:TpvVector4);
begin
 a:=pValue.r;
 g:=pValue.g;
 b:=pValue.b;
 r:=pValue.a;
end;
function TpvVector4.GetAGBG:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=b;
 result.a:=g;
end;
function TpvVector4.GetAGBB:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetAGBA:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=b;
 result.a:=a;
end;
function TpvVector4.GetAGA:TpvVector3;
begin
 result.r:=a;
 result.g:=g;
 result.b:=a;
end;
function TpvVector4.GetAGAR:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=a;
 result.a:=r;
end;
function TpvVector4.GetAGAG:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=a;
 result.a:=g;
end;
function TpvVector4.GetAGAB:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=a;
 result.a:=b;
end;
function TpvVector4.GetAGAA:TpvVector4;
begin
 result.r:=a;
 result.g:=g;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetAB:TpvVector2;
begin
 result.r:=a;
 result.g:=b;
end;
procedure TpvVector4.SetAB(const pValue:TpvVector2);
begin
 a:=pValue.r;
 b:=pValue.g;
end;
function TpvVector4.GetABR:TpvVector3;
begin
 result.r:=a;
 result.g:=b;
 result.b:=r;
end;
procedure TpvVector4.SetABR(const pValue:TpvVector3);
begin
 a:=pValue.r;
 b:=pValue.g;
 r:=pValue.b;
end;
function TpvVector4.GetABRR:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetABRG:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=r;
 result.a:=g;
end;
procedure TpvVector4.SetABRG(const pValue:TpvVector4);
begin
 a:=pValue.r;
 b:=pValue.g;
 r:=pValue.b;
 g:=pValue.a;
end;
function TpvVector4.GetABRB:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=r;
 result.a:=b;
end;
function TpvVector4.GetABRA:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=r;
 result.a:=a;
end;
function TpvVector4.GetABG:TpvVector3;
begin
 result.r:=a;
 result.g:=b;
 result.b:=g;
end;
procedure TpvVector4.SetABG(const pValue:TpvVector3);
begin
 a:=pValue.r;
 b:=pValue.g;
 g:=pValue.b;
end;
function TpvVector4.GetABGR:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=g;
 result.a:=r;
end;
procedure TpvVector4.SetABGR(const pValue:TpvVector4);
begin
 a:=pValue.r;
 b:=pValue.g;
 g:=pValue.b;
 r:=pValue.a;
end;
function TpvVector4.GetABGG:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetABGB:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=g;
 result.a:=b;
end;
function TpvVector4.GetABGA:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=g;
 result.a:=a;
end;
function TpvVector4.GetABB:TpvVector3;
begin
 result.r:=a;
 result.g:=b;
 result.b:=b;
end;
function TpvVector4.GetABBR:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=b;
 result.a:=r;
end;
function TpvVector4.GetABBG:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=b;
 result.a:=g;
end;
function TpvVector4.GetABBB:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetABBA:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=b;
 result.a:=a;
end;
function TpvVector4.GetABA:TpvVector3;
begin
 result.r:=a;
 result.g:=b;
 result.b:=a;
end;
function TpvVector4.GetABAR:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=a;
 result.a:=r;
end;
function TpvVector4.GetABAG:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=a;
 result.a:=g;
end;
function TpvVector4.GetABAB:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=a;
 result.a:=b;
end;
function TpvVector4.GetABAA:TpvVector4;
begin
 result.r:=a;
 result.g:=b;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetAA:TpvVector2;
begin
 result.r:=a;
 result.g:=a;
end;
function TpvVector4.GetAAR:TpvVector3;
begin
 result.r:=a;
 result.g:=a;
 result.b:=r;
end;
function TpvVector4.GetAARR:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=r;
 result.a:=r;
end;
function TpvVector4.GetAARG:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=r;
 result.a:=g;
end;
function TpvVector4.GetAARB:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=r;
 result.a:=b;
end;
function TpvVector4.GetAARA:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=r;
 result.a:=a;
end;
function TpvVector4.GetAAG:TpvVector3;
begin
 result.r:=a;
 result.g:=a;
 result.b:=g;
end;
function TpvVector4.GetAAGR:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=g;
 result.a:=r;
end;
function TpvVector4.GetAAGG:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=g;
 result.a:=g;
end;
function TpvVector4.GetAAGB:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=g;
 result.a:=b;
end;
function TpvVector4.GetAAGA:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=g;
 result.a:=a;
end;
function TpvVector4.GetAAB:TpvVector3;
begin
 result.r:=a;
 result.g:=a;
 result.b:=b;
end;
function TpvVector4.GetAABR:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=b;
 result.a:=r;
end;
function TpvVector4.GetAABG:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=b;
 result.a:=g;
end;
function TpvVector4.GetAABB:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=b;
 result.a:=b;
end;
function TpvVector4.GetAABA:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=b;
 result.a:=a;
end;
function TpvVector4.GetAAA:TpvVector3;
begin
 result.r:=a;
 result.g:=a;
 result.b:=a;
end;
function TpvVector4.GetAAAR:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=a;
 result.a:=r;
end;
function TpvVector4.GetAAAG:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=a;
 result.a:=g;
end;
function TpvVector4.GetAAAB:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=a;
 result.a:=b;
end;
function TpvVector4.GetAAAA:TpvVector4;
begin
 result.r:=a;
 result.g:=a;
 result.b:=a;
 result.a:=a;
end;
function TpvVector4.GetSS:TpvVector2;
begin
 result.s:=s;
 result.t:=s;
end;
function TpvVector4.GetSSS:TpvVector3;
begin
 result.s:=s;
 result.t:=s;
 result.p:=s;
end;
function TpvVector4.GetSSSS:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetSSST:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=s;
 result.q:=t;
end;
function TpvVector4.GetSSSP:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=s;
 result.q:=p;
end;
function TpvVector4.GetSSSQ:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=s;
 result.q:=q;
end;
function TpvVector4.GetSST:TpvVector3;
begin
 result.s:=s;
 result.t:=s;
 result.p:=t;
end;
function TpvVector4.GetSSTS:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=t;
 result.q:=s;
end;
function TpvVector4.GetSSTT:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetSSTP:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=t;
 result.q:=p;
end;
function TpvVector4.GetSSTQ:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=t;
 result.q:=q;
end;
function TpvVector4.GetSSP:TpvVector3;
begin
 result.s:=s;
 result.t:=s;
 result.p:=p;
end;
function TpvVector4.GetSSPS:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=p;
 result.q:=s;
end;
function TpvVector4.GetSSPT:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=p;
 result.q:=t;
end;
function TpvVector4.GetSSPP:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetSSPQ:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=p;
 result.q:=q;
end;
function TpvVector4.GetSSQ:TpvVector3;
begin
 result.s:=s;
 result.t:=s;
 result.p:=q;
end;
function TpvVector4.GetSSQS:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=q;
 result.q:=s;
end;
function TpvVector4.GetSSQT:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=q;
 result.q:=t;
end;
function TpvVector4.GetSSQP:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=q;
 result.q:=p;
end;
function TpvVector4.GetSSQQ:TpvVector4;
begin
 result.s:=s;
 result.t:=s;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetST:TpvVector2;
begin
 result.s:=s;
 result.t:=t;
end;
procedure TpvVector4.SetST(const pValue:TpvVector2);
begin
 s:=pValue.s;
 t:=pValue.t;
end;
function TpvVector4.GetSTS:TpvVector3;
begin
 result.s:=s;
 result.t:=t;
 result.p:=s;
end;
function TpvVector4.GetSTSS:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetSTST:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=s;
 result.q:=t;
end;
function TpvVector4.GetSTSP:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=s;
 result.q:=p;
end;
function TpvVector4.GetSTSQ:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=s;
 result.q:=q;
end;
function TpvVector4.GetSTT:TpvVector3;
begin
 result.s:=s;
 result.t:=t;
 result.p:=t;
end;
function TpvVector4.GetSTTS:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=t;
 result.q:=s;
end;
function TpvVector4.GetSTTT:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetSTTP:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=t;
 result.q:=p;
end;
function TpvVector4.GetSTTQ:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=t;
 result.q:=q;
end;
function TpvVector4.GetSTP:TpvVector3;
begin
 result.s:=s;
 result.t:=t;
 result.p:=p;
end;
procedure TpvVector4.SetSTP(const pValue:TpvVector3);
begin
 s:=pValue.s;
 t:=pValue.t;
 p:=pValue.p;
end;
function TpvVector4.GetSTPS:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=p;
 result.q:=s;
end;
function TpvVector4.GetSTPT:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=p;
 result.q:=t;
end;
function TpvVector4.GetSTPP:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetSTPQ:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=p;
 result.q:=q;
end;
procedure TpvVector4.SetSTPQ(const pValue:TpvVector4);
begin
 s:=pValue.s;
 t:=pValue.t;
 p:=pValue.p;
 q:=pValue.q;
end;
function TpvVector4.GetSTQ:TpvVector3;
begin
 result.s:=s;
 result.t:=t;
 result.p:=q;
end;
procedure TpvVector4.SetSTQ(const pValue:TpvVector3);
begin
 s:=pValue.s;
 t:=pValue.t;
 q:=pValue.p;
end;
function TpvVector4.GetSTQS:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=q;
 result.q:=s;
end;
function TpvVector4.GetSTQT:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=q;
 result.q:=t;
end;
function TpvVector4.GetSTQP:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=q;
 result.q:=p;
end;
procedure TpvVector4.SetSTQP(const pValue:TpvVector4);
begin
 s:=pValue.s;
 t:=pValue.t;
 q:=pValue.p;
 p:=pValue.q;
end;
function TpvVector4.GetSTQQ:TpvVector4;
begin
 result.s:=s;
 result.t:=t;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetSP:TpvVector2;
begin
 result.s:=s;
 result.t:=p;
end;
procedure TpvVector4.SetSP(const pValue:TpvVector2);
begin
 s:=pValue.s;
 p:=pValue.t;
end;
function TpvVector4.GetSPS:TpvVector3;
begin
 result.s:=s;
 result.t:=p;
 result.p:=s;
end;
function TpvVector4.GetSPSS:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetSPST:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=s;
 result.q:=t;
end;
function TpvVector4.GetSPSP:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=s;
 result.q:=p;
end;
function TpvVector4.GetSPSQ:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=s;
 result.q:=q;
end;
function TpvVector4.GetSPT:TpvVector3;
begin
 result.s:=s;
 result.t:=p;
 result.p:=t;
end;
procedure TpvVector4.SetSPT(const pValue:TpvVector3);
begin
 s:=pValue.s;
 p:=pValue.t;
 t:=pValue.p;
end;
function TpvVector4.GetSPTS:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=t;
 result.q:=s;
end;
function TpvVector4.GetSPTT:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetSPTP:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=t;
 result.q:=p;
end;
function TpvVector4.GetSPTQ:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=t;
 result.q:=q;
end;
procedure TpvVector4.SetSPTQ(const pValue:TpvVector4);
begin
 s:=pValue.s;
 p:=pValue.t;
 t:=pValue.p;
 q:=pValue.q;
end;
function TpvVector4.GetSPP:TpvVector3;
begin
 result.s:=s;
 result.t:=p;
 result.p:=p;
end;
function TpvVector4.GetSPPS:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=p;
 result.q:=s;
end;
function TpvVector4.GetSPPT:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=p;
 result.q:=t;
end;
function TpvVector4.GetSPPP:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetSPPQ:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=p;
 result.q:=q;
end;
function TpvVector4.GetSPQ:TpvVector3;
begin
 result.s:=s;
 result.t:=p;
 result.p:=q;
end;
procedure TpvVector4.SetSPQ(const pValue:TpvVector3);
begin
 s:=pValue.s;
 p:=pValue.t;
 q:=pValue.p;
end;
function TpvVector4.GetSPQS:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=q;
 result.q:=s;
end;
function TpvVector4.GetSPQT:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=q;
 result.q:=t;
end;
procedure TpvVector4.SetSPQT(const pValue:TpvVector4);
begin
 s:=pValue.s;
 p:=pValue.t;
 q:=pValue.p;
 t:=pValue.q;
end;
function TpvVector4.GetSPQP:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=q;
 result.q:=p;
end;
function TpvVector4.GetSPQQ:TpvVector4;
begin
 result.s:=s;
 result.t:=p;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetSQ:TpvVector2;
begin
 result.s:=s;
 result.t:=q;
end;
procedure TpvVector4.SetSQ(const pValue:TpvVector2);
begin
 s:=pValue.s;
 q:=pValue.t;
end;
function TpvVector4.GetSQS:TpvVector3;
begin
 result.s:=s;
 result.t:=q;
 result.p:=s;
end;
function TpvVector4.GetSQSS:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetSQST:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=s;
 result.q:=t;
end;
function TpvVector4.GetSQSP:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=s;
 result.q:=p;
end;
function TpvVector4.GetSQSQ:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=s;
 result.q:=q;
end;
function TpvVector4.GetSQT:TpvVector3;
begin
 result.s:=s;
 result.t:=q;
 result.p:=t;
end;
procedure TpvVector4.SetSQT(const pValue:TpvVector3);
begin
 s:=pValue.s;
 q:=pValue.t;
 t:=pValue.p;
end;
function TpvVector4.GetSQTS:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=t;
 result.q:=s;
end;
function TpvVector4.GetSQTT:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetSQTP:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=t;
 result.q:=p;
end;
procedure TpvVector4.SetSQTP(const pValue:TpvVector4);
begin
 s:=pValue.s;
 q:=pValue.t;
 t:=pValue.p;
 p:=pValue.q;
end;
function TpvVector4.GetSQTQ:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=t;
 result.q:=q;
end;
function TpvVector4.GetSQP:TpvVector3;
begin
 result.s:=s;
 result.t:=q;
 result.p:=p;
end;
procedure TpvVector4.SetSQP(const pValue:TpvVector3);
begin
 s:=pValue.s;
 q:=pValue.t;
 p:=pValue.p;
end;
function TpvVector4.GetSQPS:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=p;
 result.q:=s;
end;
function TpvVector4.GetSQPT:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=p;
 result.q:=t;
end;
procedure TpvVector4.SetSQPT(const pValue:TpvVector4);
begin
 s:=pValue.s;
 q:=pValue.t;
 p:=pValue.p;
 t:=pValue.q;
end;
function TpvVector4.GetSQPP:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetSQPQ:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=p;
 result.q:=q;
end;
function TpvVector4.GetSQQ:TpvVector3;
begin
 result.s:=s;
 result.t:=q;
 result.p:=q;
end;
function TpvVector4.GetSQQS:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=q;
 result.q:=s;
end;
function TpvVector4.GetSQQT:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=q;
 result.q:=t;
end;
function TpvVector4.GetSQQP:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=q;
 result.q:=p;
end;
function TpvVector4.GetSQQQ:TpvVector4;
begin
 result.s:=s;
 result.t:=q;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetTS:TpvVector2;
begin
 result.s:=t;
 result.t:=s;
end;
procedure TpvVector4.SetTS(const pValue:TpvVector2);
begin
 t:=pValue.s;
 s:=pValue.t;
end;
function TpvVector4.GetTSS:TpvVector3;
begin
 result.s:=t;
 result.t:=s;
 result.p:=s;
end;
function TpvVector4.GetTSSS:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetTSST:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=s;
 result.q:=t;
end;
function TpvVector4.GetTSSP:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=s;
 result.q:=p;
end;
function TpvVector4.GetTSSQ:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=s;
 result.q:=q;
end;
function TpvVector4.GetTST:TpvVector3;
begin
 result.s:=t;
 result.t:=s;
 result.p:=t;
end;
function TpvVector4.GetTSTS:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=t;
 result.q:=s;
end;
function TpvVector4.GetTSTT:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetTSTP:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=t;
 result.q:=p;
end;
function TpvVector4.GetTSTQ:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=t;
 result.q:=q;
end;
function TpvVector4.GetTSP:TpvVector3;
begin
 result.s:=t;
 result.t:=s;
 result.p:=p;
end;
procedure TpvVector4.SetTSP(const pValue:TpvVector3);
begin
 t:=pValue.s;
 s:=pValue.t;
 p:=pValue.p;
end;
function TpvVector4.GetTSPS:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=p;
 result.q:=s;
end;
function TpvVector4.GetTSPT:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=p;
 result.q:=t;
end;
function TpvVector4.GetTSPP:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetTSPQ:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=p;
 result.q:=q;
end;
procedure TpvVector4.SetTSPQ(const pValue:TpvVector4);
begin
 t:=pValue.s;
 s:=pValue.t;
 p:=pValue.p;
 q:=pValue.q;
end;
function TpvVector4.GetTSQ:TpvVector3;
begin
 result.s:=t;
 result.t:=s;
 result.p:=q;
end;
procedure TpvVector4.SetTSQ(const pValue:TpvVector3);
begin
 t:=pValue.s;
 s:=pValue.t;
 q:=pValue.p;
end;
function TpvVector4.GetTSQS:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=q;
 result.q:=s;
end;
function TpvVector4.GetTSQT:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=q;
 result.q:=t;
end;
function TpvVector4.GetTSQP:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=q;
 result.q:=p;
end;
procedure TpvVector4.SetTSQP(const pValue:TpvVector4);
begin
 t:=pValue.s;
 s:=pValue.t;
 q:=pValue.p;
 p:=pValue.q;
end;
function TpvVector4.GetTSQQ:TpvVector4;
begin
 result.s:=t;
 result.t:=s;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetTT:TpvVector2;
begin
 result.s:=t;
 result.t:=t;
end;
function TpvVector4.GetTTS:TpvVector3;
begin
 result.s:=t;
 result.t:=t;
 result.p:=s;
end;
function TpvVector4.GetTTSS:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetTTST:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=s;
 result.q:=t;
end;
function TpvVector4.GetTTSP:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=s;
 result.q:=p;
end;
function TpvVector4.GetTTSQ:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=s;
 result.q:=q;
end;
function TpvVector4.GetTTT:TpvVector3;
begin
 result.s:=t;
 result.t:=t;
 result.p:=t;
end;
function TpvVector4.GetTTTS:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=t;
 result.q:=s;
end;
function TpvVector4.GetTTTT:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetTTTP:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=t;
 result.q:=p;
end;
function TpvVector4.GetTTTQ:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=t;
 result.q:=q;
end;
function TpvVector4.GetTTP:TpvVector3;
begin
 result.s:=t;
 result.t:=t;
 result.p:=p;
end;
function TpvVector4.GetTTPS:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=p;
 result.q:=s;
end;
function TpvVector4.GetTTPT:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=p;
 result.q:=t;
end;
function TpvVector4.GetTTPP:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetTTPQ:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=p;
 result.q:=q;
end;
function TpvVector4.GetTTQ:TpvVector3;
begin
 result.s:=t;
 result.t:=t;
 result.p:=q;
end;
function TpvVector4.GetTTQS:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=q;
 result.q:=s;
end;
function TpvVector4.GetTTQT:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=q;
 result.q:=t;
end;
function TpvVector4.GetTTQP:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=q;
 result.q:=p;
end;
function TpvVector4.GetTTQQ:TpvVector4;
begin
 result.s:=t;
 result.t:=t;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetTP:TpvVector2;
begin
 result.s:=t;
 result.t:=p;
end;
procedure TpvVector4.SetTP(const pValue:TpvVector2);
begin
 t:=pValue.s;
 p:=pValue.t;
end;
function TpvVector4.GetTPS:TpvVector3;
begin
 result.s:=t;
 result.t:=p;
 result.p:=s;
end;
procedure TpvVector4.SetTPS(const pValue:TpvVector3);
begin
 t:=pValue.s;
 p:=pValue.t;
 s:=pValue.p;
end;
function TpvVector4.GetTPSS:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetTPST:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=s;
 result.q:=t;
end;
function TpvVector4.GetTPSP:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=s;
 result.q:=p;
end;
function TpvVector4.GetTPSQ:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=s;
 result.q:=q;
end;
procedure TpvVector4.SetTPSQ(const pValue:TpvVector4);
begin
 t:=pValue.s;
 p:=pValue.t;
 s:=pValue.p;
 q:=pValue.q;
end;
function TpvVector4.GetTPT:TpvVector3;
begin
 result.s:=t;
 result.t:=p;
 result.p:=t;
end;
function TpvVector4.GetTPTS:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=t;
 result.q:=s;
end;
function TpvVector4.GetTPTT:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetTPTP:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=t;
 result.q:=p;
end;
function TpvVector4.GetTPTQ:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=t;
 result.q:=q;
end;
function TpvVector4.GetTPP:TpvVector3;
begin
 result.s:=t;
 result.t:=p;
 result.p:=p;
end;
function TpvVector4.GetTPPS:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=p;
 result.q:=s;
end;
function TpvVector4.GetTPPT:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=p;
 result.q:=t;
end;
function TpvVector4.GetTPPP:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetTPPQ:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=p;
 result.q:=q;
end;
function TpvVector4.GetTPQ:TpvVector3;
begin
 result.s:=t;
 result.t:=p;
 result.p:=q;
end;
procedure TpvVector4.SetTPQ(const pValue:TpvVector3);
begin
 t:=pValue.s;
 p:=pValue.t;
 q:=pValue.p;
end;
function TpvVector4.GetTPQS:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=q;
 result.q:=s;
end;
procedure TpvVector4.SetTPQS(const pValue:TpvVector4);
begin
 t:=pValue.s;
 p:=pValue.t;
 q:=pValue.p;
 s:=pValue.q;
end;
function TpvVector4.GetTPQT:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=q;
 result.q:=t;
end;
function TpvVector4.GetTPQP:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=q;
 result.q:=p;
end;
function TpvVector4.GetTPQQ:TpvVector4;
begin
 result.s:=t;
 result.t:=p;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetTQ:TpvVector2;
begin
 result.s:=t;
 result.t:=q;
end;
procedure TpvVector4.SetTQ(const pValue:TpvVector2);
begin
 t:=pValue.s;
 q:=pValue.t;
end;
function TpvVector4.GetTQS:TpvVector3;
begin
 result.s:=t;
 result.t:=q;
 result.p:=s;
end;
procedure TpvVector4.SetTQS(const pValue:TpvVector3);
begin
 t:=pValue.s;
 q:=pValue.t;
 s:=pValue.p;
end;
function TpvVector4.GetTQSS:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetTQST:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=s;
 result.q:=t;
end;
function TpvVector4.GetTQSP:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=s;
 result.q:=p;
end;
procedure TpvVector4.SetTQSP(const pValue:TpvVector4);
begin
 t:=pValue.s;
 q:=pValue.t;
 s:=pValue.p;
 p:=pValue.q;
end;
function TpvVector4.GetTQSQ:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=s;
 result.q:=q;
end;
function TpvVector4.GetTQT:TpvVector3;
begin
 result.s:=t;
 result.t:=q;
 result.p:=t;
end;
function TpvVector4.GetTQTS:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=t;
 result.q:=s;
end;
function TpvVector4.GetTQTT:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetTQTP:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=t;
 result.q:=p;
end;
function TpvVector4.GetTQTQ:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=t;
 result.q:=q;
end;
function TpvVector4.GetTQP:TpvVector3;
begin
 result.s:=t;
 result.t:=q;
 result.p:=p;
end;
procedure TpvVector4.SetTQP(const pValue:TpvVector3);
begin
 t:=pValue.s;
 q:=pValue.t;
 p:=pValue.p;
end;
function TpvVector4.GetTQPS:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=p;
 result.q:=s;
end;
procedure TpvVector4.SetTQPS(const pValue:TpvVector4);
begin
 t:=pValue.s;
 q:=pValue.t;
 p:=pValue.p;
 s:=pValue.q;
end;
function TpvVector4.GetTQPT:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=p;
 result.q:=t;
end;
function TpvVector4.GetTQPP:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetTQPQ:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=p;
 result.q:=q;
end;
function TpvVector4.GetTQQ:TpvVector3;
begin
 result.s:=t;
 result.t:=q;
 result.p:=q;
end;
function TpvVector4.GetTQQS:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=q;
 result.q:=s;
end;
function TpvVector4.GetTQQT:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=q;
 result.q:=t;
end;
function TpvVector4.GetTQQP:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=q;
 result.q:=p;
end;
function TpvVector4.GetTQQQ:TpvVector4;
begin
 result.s:=t;
 result.t:=q;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetPS:TpvVector2;
begin
 result.s:=p;
 result.t:=s;
end;
procedure TpvVector4.SetPS(const pValue:TpvVector2);
begin
 p:=pValue.s;
 s:=pValue.t;
end;
function TpvVector4.GetPSS:TpvVector3;
begin
 result.s:=p;
 result.t:=s;
 result.p:=s;
end;
function TpvVector4.GetPSSS:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetPSST:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=s;
 result.q:=t;
end;
function TpvVector4.GetPSSP:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=s;
 result.q:=p;
end;
function TpvVector4.GetPSSQ:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=s;
 result.q:=q;
end;
function TpvVector4.GetPST:TpvVector3;
begin
 result.s:=p;
 result.t:=s;
 result.p:=t;
end;
procedure TpvVector4.SetPST(const pValue:TpvVector3);
begin
 p:=pValue.s;
 s:=pValue.t;
 t:=pValue.p;
end;
function TpvVector4.GetPSTS:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=t;
 result.q:=s;
end;
function TpvVector4.GetPSTT:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetPSTP:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=t;
 result.q:=p;
end;
function TpvVector4.GetPSTQ:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=t;
 result.q:=q;
end;
procedure TpvVector4.SetPSTQ(const pValue:TpvVector4);
begin
 p:=pValue.s;
 s:=pValue.t;
 t:=pValue.p;
 q:=pValue.q;
end;
function TpvVector4.GetPSP:TpvVector3;
begin
 result.s:=p;
 result.t:=s;
 result.p:=p;
end;
function TpvVector4.GetPSPS:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=p;
 result.q:=s;
end;
function TpvVector4.GetPSPT:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=p;
 result.q:=t;
end;
function TpvVector4.GetPSPP:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetPSPQ:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=p;
 result.q:=q;
end;
function TpvVector4.GetPSQ:TpvVector3;
begin
 result.s:=p;
 result.t:=s;
 result.p:=q;
end;
procedure TpvVector4.SetPSQ(const pValue:TpvVector3);
begin
 p:=pValue.s;
 s:=pValue.t;
 q:=pValue.p;
end;
function TpvVector4.GetPSQS:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=q;
 result.q:=s;
end;
function TpvVector4.GetPSQT:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=q;
 result.q:=t;
end;
procedure TpvVector4.SetPSQT(const pValue:TpvVector4);
begin
 p:=pValue.s;
 s:=pValue.t;
 q:=pValue.p;
 t:=pValue.q;
end;
function TpvVector4.GetPSQP:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=q;
 result.q:=p;
end;
function TpvVector4.GetPSQQ:TpvVector4;
begin
 result.s:=p;
 result.t:=s;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetPT:TpvVector2;
begin
 result.s:=p;
 result.t:=t;
end;
procedure TpvVector4.SetPT(const pValue:TpvVector2);
begin
 p:=pValue.s;
 t:=pValue.t;
end;
function TpvVector4.GetPTS:TpvVector3;
begin
 result.s:=p;
 result.t:=t;
 result.p:=s;
end;
procedure TpvVector4.SetPTS(const pValue:TpvVector3);
begin
 p:=pValue.s;
 t:=pValue.t;
 s:=pValue.p;
end;
function TpvVector4.GetPTSS:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetPTST:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=s;
 result.q:=t;
end;
function TpvVector4.GetPTSP:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=s;
 result.q:=p;
end;
function TpvVector4.GetPTSQ:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=s;
 result.q:=q;
end;
procedure TpvVector4.SetPTSQ(const pValue:TpvVector4);
begin
 p:=pValue.s;
 t:=pValue.t;
 s:=pValue.p;
 q:=pValue.q;
end;
function TpvVector4.GetPTT:TpvVector3;
begin
 result.s:=p;
 result.t:=t;
 result.p:=t;
end;
function TpvVector4.GetPTTS:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=t;
 result.q:=s;
end;
function TpvVector4.GetPTTT:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetPTTP:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=t;
 result.q:=p;
end;
function TpvVector4.GetPTTQ:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=t;
 result.q:=q;
end;
function TpvVector4.GetPTP:TpvVector3;
begin
 result.s:=p;
 result.t:=t;
 result.p:=p;
end;
function TpvVector4.GetPTPS:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=p;
 result.q:=s;
end;
function TpvVector4.GetPTPT:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=p;
 result.q:=t;
end;
function TpvVector4.GetPTPP:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetPTPQ:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=p;
 result.q:=q;
end;
function TpvVector4.GetPTQ:TpvVector3;
begin
 result.s:=p;
 result.t:=t;
 result.p:=q;
end;
procedure TpvVector4.SetPTQ(const pValue:TpvVector3);
begin
 p:=pValue.s;
 t:=pValue.t;
 q:=pValue.p;
end;
function TpvVector4.GetPTQS:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=q;
 result.q:=s;
end;
procedure TpvVector4.SetPTQS(const pValue:TpvVector4);
begin
 p:=pValue.s;
 t:=pValue.t;
 q:=pValue.p;
 s:=pValue.q;
end;
function TpvVector4.GetPTQT:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=q;
 result.q:=t;
end;
function TpvVector4.GetPTQP:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=q;
 result.q:=p;
end;
function TpvVector4.GetPTQQ:TpvVector4;
begin
 result.s:=p;
 result.t:=t;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetPP:TpvVector2;
begin
 result.s:=p;
 result.t:=p;
end;
function TpvVector4.GetPPS:TpvVector3;
begin
 result.s:=p;
 result.t:=p;
 result.p:=s;
end;
function TpvVector4.GetPPSS:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetPPST:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=s;
 result.q:=t;
end;
function TpvVector4.GetPPSP:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=s;
 result.q:=p;
end;
function TpvVector4.GetPPSQ:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=s;
 result.q:=q;
end;
function TpvVector4.GetPPT:TpvVector3;
begin
 result.s:=p;
 result.t:=p;
 result.p:=t;
end;
function TpvVector4.GetPPTS:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=t;
 result.q:=s;
end;
function TpvVector4.GetPPTT:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetPPTP:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=t;
 result.q:=p;
end;
function TpvVector4.GetPPTQ:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=t;
 result.q:=q;
end;
function TpvVector4.GetPPP:TpvVector3;
begin
 result.s:=p;
 result.t:=p;
 result.p:=p;
end;
function TpvVector4.GetPPPS:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=p;
 result.q:=s;
end;
function TpvVector4.GetPPPT:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=p;
 result.q:=t;
end;
function TpvVector4.GetPPPP:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetPPPQ:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=p;
 result.q:=q;
end;
function TpvVector4.GetPPQ:TpvVector3;
begin
 result.s:=p;
 result.t:=p;
 result.p:=q;
end;
function TpvVector4.GetPPQS:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=q;
 result.q:=s;
end;
function TpvVector4.GetPPQT:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=q;
 result.q:=t;
end;
function TpvVector4.GetPPQP:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=q;
 result.q:=p;
end;
function TpvVector4.GetPPQQ:TpvVector4;
begin
 result.s:=p;
 result.t:=p;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetPQ:TpvVector2;
begin
 result.s:=p;
 result.t:=q;
end;
procedure TpvVector4.SetPQ(const pValue:TpvVector2);
begin
 p:=pValue.s;
 q:=pValue.t;
end;
function TpvVector4.GetPQS:TpvVector3;
begin
 result.s:=p;
 result.t:=q;
 result.p:=s;
end;
procedure TpvVector4.SetPQS(const pValue:TpvVector3);
begin
 p:=pValue.s;
 q:=pValue.t;
 s:=pValue.p;
end;
function TpvVector4.GetPQSS:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetPQST:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=s;
 result.q:=t;
end;
procedure TpvVector4.SetPQST(const pValue:TpvVector4);
begin
 p:=pValue.s;
 q:=pValue.t;
 s:=pValue.p;
 t:=pValue.q;
end;
function TpvVector4.GetPQSP:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=s;
 result.q:=p;
end;
function TpvVector4.GetPQSQ:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=s;
 result.q:=q;
end;
function TpvVector4.GetPQT:TpvVector3;
begin
 result.s:=p;
 result.t:=q;
 result.p:=t;
end;
procedure TpvVector4.SetPQT(const pValue:TpvVector3);
begin
 p:=pValue.s;
 q:=pValue.t;
 t:=pValue.p;
end;
function TpvVector4.GetPQTS:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=t;
 result.q:=s;
end;
procedure TpvVector4.SetPQTS(const pValue:TpvVector4);
begin
 p:=pValue.s;
 q:=pValue.t;
 t:=pValue.p;
 s:=pValue.q;
end;
function TpvVector4.GetPQTT:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetPQTP:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=t;
 result.q:=p;
end;
function TpvVector4.GetPQTQ:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=t;
 result.q:=q;
end;
function TpvVector4.GetPQP:TpvVector3;
begin
 result.s:=p;
 result.t:=q;
 result.p:=p;
end;
function TpvVector4.GetPQPS:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=p;
 result.q:=s;
end;
function TpvVector4.GetPQPT:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=p;
 result.q:=t;
end;
function TpvVector4.GetPQPP:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetPQPQ:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=p;
 result.q:=q;
end;
function TpvVector4.GetPQQ:TpvVector3;
begin
 result.s:=p;
 result.t:=q;
 result.p:=q;
end;
function TpvVector4.GetPQQS:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=q;
 result.q:=s;
end;
function TpvVector4.GetPQQT:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=q;
 result.q:=t;
end;
function TpvVector4.GetPQQP:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=q;
 result.q:=p;
end;
function TpvVector4.GetPQQQ:TpvVector4;
begin
 result.s:=p;
 result.t:=q;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetQS:TpvVector2;
begin
 result.s:=q;
 result.t:=s;
end;
procedure TpvVector4.SetQS(const pValue:TpvVector2);
begin
 q:=pValue.s;
 s:=pValue.t;
end;
function TpvVector4.GetQSS:TpvVector3;
begin
 result.s:=q;
 result.t:=s;
 result.p:=s;
end;
function TpvVector4.GetQSSS:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetQSST:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=s;
 result.q:=t;
end;
function TpvVector4.GetQSSP:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=s;
 result.q:=p;
end;
function TpvVector4.GetQSSQ:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=s;
 result.q:=q;
end;
function TpvVector4.GetQST:TpvVector3;
begin
 result.s:=q;
 result.t:=s;
 result.p:=t;
end;
procedure TpvVector4.SetQST(const pValue:TpvVector3);
begin
 q:=pValue.s;
 s:=pValue.t;
 t:=pValue.p;
end;
function TpvVector4.GetQSTS:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=t;
 result.q:=s;
end;
function TpvVector4.GetQSTT:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetQSTP:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=t;
 result.q:=p;
end;
procedure TpvVector4.SetQSTP(const pValue:TpvVector4);
begin
 q:=pValue.s;
 s:=pValue.t;
 t:=pValue.p;
 p:=pValue.q;
end;
function TpvVector4.GetQSTQ:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=t;
 result.q:=q;
end;
function TpvVector4.GetQSP:TpvVector3;
begin
 result.s:=q;
 result.t:=s;
 result.p:=p;
end;
procedure TpvVector4.SetQSP(const pValue:TpvVector3);
begin
 q:=pValue.s;
 s:=pValue.t;
 p:=pValue.p;
end;
function TpvVector4.GetQSPS:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=p;
 result.q:=s;
end;
function TpvVector4.GetQSPT:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=p;
 result.q:=t;
end;
procedure TpvVector4.SetQSPT(const pValue:TpvVector4);
begin
 q:=pValue.s;
 s:=pValue.t;
 p:=pValue.p;
 t:=pValue.q;
end;
function TpvVector4.GetQSPP:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetQSPQ:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=p;
 result.q:=q;
end;
function TpvVector4.GetQSQ:TpvVector3;
begin
 result.s:=q;
 result.t:=s;
 result.p:=q;
end;
function TpvVector4.GetQSQS:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=q;
 result.q:=s;
end;
function TpvVector4.GetQSQT:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=q;
 result.q:=t;
end;
function TpvVector4.GetQSQP:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=q;
 result.q:=p;
end;
function TpvVector4.GetQSQQ:TpvVector4;
begin
 result.s:=q;
 result.t:=s;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetQT:TpvVector2;
begin
 result.s:=q;
 result.t:=t;
end;
procedure TpvVector4.SetQT(const pValue:TpvVector2);
begin
 q:=pValue.s;
 t:=pValue.t;
end;
function TpvVector4.GetQTS:TpvVector3;
begin
 result.s:=q;
 result.t:=t;
 result.p:=s;
end;
procedure TpvVector4.SetQTS(const pValue:TpvVector3);
begin
 q:=pValue.s;
 t:=pValue.t;
 s:=pValue.p;
end;
function TpvVector4.GetQTSS:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetQTST:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=s;
 result.q:=t;
end;
function TpvVector4.GetQTSP:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=s;
 result.q:=p;
end;
procedure TpvVector4.SetQTSP(const pValue:TpvVector4);
begin
 q:=pValue.s;
 t:=pValue.t;
 s:=pValue.p;
 p:=pValue.q;
end;
function TpvVector4.GetQTSQ:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=s;
 result.q:=q;
end;
function TpvVector4.GetQTT:TpvVector3;
begin
 result.s:=q;
 result.t:=t;
 result.p:=t;
end;
function TpvVector4.GetQTTS:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=t;
 result.q:=s;
end;
function TpvVector4.GetQTTT:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetQTTP:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=t;
 result.q:=p;
end;
function TpvVector4.GetQTTQ:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=t;
 result.q:=q;
end;
function TpvVector4.GetQTP:TpvVector3;
begin
 result.s:=q;
 result.t:=t;
 result.p:=p;
end;
procedure TpvVector4.SetQTP(const pValue:TpvVector3);
begin
 q:=pValue.s;
 t:=pValue.t;
 p:=pValue.p;
end;
function TpvVector4.GetQTPS:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=p;
 result.q:=s;
end;
procedure TpvVector4.SetQTPS(const pValue:TpvVector4);
begin
 q:=pValue.s;
 t:=pValue.t;
 p:=pValue.p;
 s:=pValue.q;
end;
function TpvVector4.GetQTPT:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=p;
 result.q:=t;
end;
function TpvVector4.GetQTPP:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetQTPQ:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=p;
 result.q:=q;
end;
function TpvVector4.GetQTQ:TpvVector3;
begin
 result.s:=q;
 result.t:=t;
 result.p:=q;
end;
function TpvVector4.GetQTQS:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=q;
 result.q:=s;
end;
function TpvVector4.GetQTQT:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=q;
 result.q:=t;
end;
function TpvVector4.GetQTQP:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=q;
 result.q:=p;
end;
function TpvVector4.GetQTQQ:TpvVector4;
begin
 result.s:=q;
 result.t:=t;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetQP:TpvVector2;
begin
 result.s:=q;
 result.t:=p;
end;
procedure TpvVector4.SetQP(const pValue:TpvVector2);
begin
 q:=pValue.s;
 p:=pValue.t;
end;
function TpvVector4.GetQPS:TpvVector3;
begin
 result.s:=q;
 result.t:=p;
 result.p:=s;
end;
procedure TpvVector4.SetQPS(const pValue:TpvVector3);
begin
 q:=pValue.s;
 p:=pValue.t;
 s:=pValue.p;
end;
function TpvVector4.GetQPSS:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetQPST:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=s;
 result.q:=t;
end;
procedure TpvVector4.SetQPST(const pValue:TpvVector4);
begin
 q:=pValue.s;
 p:=pValue.t;
 s:=pValue.p;
 t:=pValue.q;
end;
function TpvVector4.GetQPSP:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=s;
 result.q:=p;
end;
function TpvVector4.GetQPSQ:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=s;
 result.q:=q;
end;
function TpvVector4.GetQPT:TpvVector3;
begin
 result.s:=q;
 result.t:=p;
 result.p:=t;
end;
procedure TpvVector4.SetQPT(const pValue:TpvVector3);
begin
 q:=pValue.s;
 p:=pValue.t;
 t:=pValue.p;
end;
function TpvVector4.GetQPTS:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=t;
 result.q:=s;
end;
procedure TpvVector4.SetQPTS(const pValue:TpvVector4);
begin
 q:=pValue.s;
 p:=pValue.t;
 t:=pValue.p;
 s:=pValue.q;
end;
function TpvVector4.GetQPTT:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetQPTP:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=t;
 result.q:=p;
end;
function TpvVector4.GetQPTQ:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=t;
 result.q:=q;
end;
function TpvVector4.GetQPP:TpvVector3;
begin
 result.s:=q;
 result.t:=p;
 result.p:=p;
end;
function TpvVector4.GetQPPS:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=p;
 result.q:=s;
end;
function TpvVector4.GetQPPT:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=p;
 result.q:=t;
end;
function TpvVector4.GetQPPP:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetQPPQ:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=p;
 result.q:=q;
end;
function TpvVector4.GetQPQ:TpvVector3;
begin
 result.s:=q;
 result.t:=p;
 result.p:=q;
end;
function TpvVector4.GetQPQS:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=q;
 result.q:=s;
end;
function TpvVector4.GetQPQT:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=q;
 result.q:=t;
end;
function TpvVector4.GetQPQP:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=q;
 result.q:=p;
end;
function TpvVector4.GetQPQQ:TpvVector4;
begin
 result.s:=q;
 result.t:=p;
 result.p:=q;
 result.q:=q;
end;
function TpvVector4.GetQQ:TpvVector2;
begin
 result.s:=q;
 result.t:=q;
end;
function TpvVector4.GetQQS:TpvVector3;
begin
 result.s:=q;
 result.t:=q;
 result.p:=s;
end;
function TpvVector4.GetQQSS:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=s;
 result.q:=s;
end;
function TpvVector4.GetQQST:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=s;
 result.q:=t;
end;
function TpvVector4.GetQQSP:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=s;
 result.q:=p;
end;
function TpvVector4.GetQQSQ:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=s;
 result.q:=q;
end;
function TpvVector4.GetQQT:TpvVector3;
begin
 result.s:=q;
 result.t:=q;
 result.p:=t;
end;
function TpvVector4.GetQQTS:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=t;
 result.q:=s;
end;
function TpvVector4.GetQQTT:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=t;
 result.q:=t;
end;
function TpvVector4.GetQQTP:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=t;
 result.q:=p;
end;
function TpvVector4.GetQQTQ:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=t;
 result.q:=q;
end;
function TpvVector4.GetQQP:TpvVector3;
begin
 result.s:=q;
 result.t:=q;
 result.p:=p;
end;
function TpvVector4.GetQQPS:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=p;
 result.q:=s;
end;
function TpvVector4.GetQQPT:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=p;
 result.q:=t;
end;
function TpvVector4.GetQQPP:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=p;
 result.q:=p;
end;
function TpvVector4.GetQQPQ:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=p;
 result.q:=q;
end;
function TpvVector4.GetQQQ:TpvVector3;
begin
 result.s:=q;
 result.t:=q;
 result.p:=q;
end;
function TpvVector4.GetQQQS:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=q;
 result.q:=s;
end;
function TpvVector4.GetQQQT:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=q;
 result.q:=t;
end;
function TpvVector4.GetQQQP:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=q;
 result.q:=p;
end;
function TpvVector4.GetQQQQ:TpvVector4;
begin
 result.s:=q;
 result.t:=q;
 result.p:=q;
 result.q:=q;
end;
