From ac85f3be5e5b4a384ad1ccb17683c466c51f0747 Mon Sep 17 00:00:00 2001 From: zzj <31836194@qq.com> Date: Mon, 22 Jan 2024 09:31:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E6=9F=A5=E7=9C=8B=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E7=AB=AF=E6=8E=A5=E5=8F=A3=EF=BC=8CPC=E6=88=91?= =?UTF-8?q?=E7=9A=84=E5=B7=A5=E8=B5=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app.config | 4 + .../Controllers/Gz_AmountsController.cs | 29 +- .../Views/Gz_Amounts/MyAmount.cshtml | 294 ++ .../Learun.Application.Web.csproj | 1 + .../Learun.Application.WebApi.csproj | 1 + .../PersonnelManagement/GzAmountApi.cs | 64 + .../Learun.Application.WebApi/Web.config | 8 + .../Learun.Application.Website/Web.config | 8 + .../App.config | 4 + .../Learun.Application.AppMagager/app.config | 4 + .../Learun.Application.Base/App.config | 4 + .../Learun.Application.Excel/app.config | 4 + .../Learun.Application.Extention/app.config | 4 + .../Learun.Application.Form/app.config | 4 + .../Learun.Application.Language/app.config | 16 + .../Learun.Application.Mapping/App.config | 4 + .../Learun.Application.Message/app.config | 4 + .../Learun.Application.OA/app.config | 16 + .../Learun.Application.Report/app.config | 4 + .../Gz_Amounts/Gz_AmountsBLL.cs | 25 +- .../Gz_Amounts/Gz_AmountsCols.cs | 2 +- .../Gz_Amounts/Gz_AmountsIBLL.cs | 5 +- .../Gz_Amounts/Gz_AmountsService.cs | 74 +- .../app.config | 4 + .../Learun.Application.WorkFlow/app.config | 4 + .../Learun.Cache.Factory/app.config | 4 + .../Learun.Cache.Redis.csproj | 4 +- .../Learun.Cache.Redis/app.config | 4 + .../Learun.Cache.Redis/packages.config | 2 +- .../Learun.Util/Learun.Util.Operat/app.config | 4 + .../App.config | 4 + .../.signature.p7s | Bin 9482 -> 0 bytes .../System.Numerics.Vectors.4.4.0/LICENSE.TXT | 23 - .../System.Numerics.Vectors.4.4.0.nupkg | Bin 337043 -> 0 bytes .../THIRD-PARTY-NOTICES.TXT | 226 -- .../lib/MonoAndroid10/_._ | 0 .../lib/MonoTouch10/_._ | 0 .../lib/net46/System.Numerics.Vectors.dll | Bin 115936 -> 0 bytes .../lib/net46/System.Numerics.Vectors.xml | 2597 ----------------- .../lib/netcoreapp2.0/_._ | 0 .../System.Numerics.Vectors.dll | Bin 161152 -> 0 bytes .../System.Numerics.Vectors.xml | 2597 ----------------- .../System.Numerics.Vectors.dll | Bin 163712 -> 0 bytes .../System.Numerics.Vectors.xml | 2597 ----------------- .../System.Numerics.Vectors.dll | Bin 161152 -> 0 bytes .../System.Numerics.Vectors.xml | 2597 ----------------- .../lib/xamarinios10/_._ | 0 .../lib/xamarinmac20/_._ | 0 .../lib/xamarintvos10/_._ | 0 .../lib/xamarinwatchos10/_._ | 0 .../ref/MonoAndroid10/_._ | 0 .../ref/MonoTouch10/_._ | 0 .../ref/net46/System.Numerics.Vectors.dll | Bin 29568 -> 0 bytes .../ref/net46/System.Numerics.Vectors.xml | 2597 ----------------- .../ref/netcoreapp2.0/_._ | 0 .../System.Numerics.Vectors.dll | Bin 38272 -> 0 bytes .../System.Numerics.Vectors.xml | 2597 ----------------- .../System.Numerics.Vectors.dll | Bin 38272 -> 0 bytes .../System.Numerics.Vectors.xml | 2597 ----------------- .../ref/xamarinios10/_._ | 0 .../ref/xamarinmac20/_._ | 0 .../ref/xamarintvos10/_._ | 0 .../ref/xamarinwatchos10/_._ | 0 .../useSharedDesignerContext.txt | 0 .../System.Numerics.Vectors.4.4.0/version.txt | 1 - 65 files changed, 600 insertions(+), 18442 deletions(-) create mode 100644 Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/PersonnelManagement/Views/Gz_Amounts/MyAmount.cshtml create mode 100644 Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/PersonnelManagement/GzAmountApi.cs delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/.signature.p7s delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/LICENSE.TXT delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/System.Numerics.Vectors.4.4.0.nupkg delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/THIRD-PARTY-NOTICES.TXT delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/MonoAndroid10/_._ delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/MonoTouch10/_._ delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/net46/System.Numerics.Vectors.dll delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/net46/System.Numerics.Vectors.xml delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netcoreapp2.0/_._ delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netstandard1.0/System.Numerics.Vectors.dll delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netstandard1.0/System.Numerics.Vectors.xml delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netstandard2.0/System.Numerics.Vectors.dll delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netstandard2.0/System.Numerics.Vectors.xml delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/xamarinios10/_._ delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/xamarinmac20/_._ delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/xamarintvos10/_._ delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/xamarinwatchos10/_._ delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/MonoAndroid10/_._ delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/MonoTouch10/_._ delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/net46/System.Numerics.Vectors.dll delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/net46/System.Numerics.Vectors.xml delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/netcoreapp2.0/_._ delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/netstandard1.0/System.Numerics.Vectors.dll delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/netstandard1.0/System.Numerics.Vectors.xml delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/netstandard2.0/System.Numerics.Vectors.dll delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/netstandard2.0/System.Numerics.Vectors.xml delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/xamarinios10/_._ delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/xamarinmac20/_._ delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/xamarintvos10/_._ delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/xamarinwatchos10/_._ delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/useSharedDesignerContext.txt delete mode 100644 Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/version.txt diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Organization/app.config b/Learun.Framework.Ultimate V7/Learun.Application.Organization/app.config index 4ef539ff8..d036c29f6 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.Organization/app.config +++ b/Learun.Framework.Ultimate V7/Learun.Application.Organization/app.config @@ -18,6 +18,10 @@ + + + + diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/PersonnelManagement/Controllers/Gz_AmountsController.cs b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/PersonnelManagement/Controllers/Gz_AmountsController.cs index 9a4140f6d..3d143780a 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/PersonnelManagement/Controllers/Gz_AmountsController.cs +++ b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/PersonnelManagement/Controllers/Gz_AmountsController.cs @@ -51,7 +51,15 @@ namespace Learun.Application.Web.Areas.PersonnelManagement.Controllers { return View(); } - + /// + /// 我的工资 + /// + /// + [HttpGet] + public ActionResult MyAmount() + { + return View(); + } #endregion #region 获取数据 @@ -112,6 +120,23 @@ namespace Learun.Application.Web.Areas.PersonnelManagement.Controllers }; return Success(jsonData); } + + [HttpGet] + [AjaxOnly] + public ActionResult GetPageListMyCol(string pagination, string queryJson) + { + Pagination paginationobj = pagination.ToObject(); + var user = LoginUserInfo.Get(); + var data = gz_AmountsIBLL.GetPageListCol(paginationobj, queryJson, user.account); + var jsonData = new + { + rows = data, + total = paginationobj.total, + page = paginationobj.page, + records = paginationobj.records + }; + return Success(jsonData); + } /// /// 获取表单数据 /// @@ -129,7 +154,7 @@ namespace Learun.Application.Web.Areas.PersonnelManagement.Controllers [AjaxOnly] public ActionResult GetDetail(string userNo,int year,int month) { - var data = gz_AmountsIBLL.GetAmountsDetail(userNo, year, month); + var data = gz_AmountsIBLL.GetAmountsDetail(userNo, year, month, 0); return Success(data); } #endregion diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/PersonnelManagement/Views/Gz_Amounts/MyAmount.cshtml b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/PersonnelManagement/Views/Gz_Amounts/MyAmount.cshtml new file mode 100644 index 000000000..cdd3fc494 --- /dev/null +++ b/Learun.Framework.Ultimate V7/Learun.Application.Web/Areas/PersonnelManagement/Views/Gz_Amounts/MyAmount.cshtml @@ -0,0 +1,294 @@ + + + + + + 我的工资 + + + + + + + @{ + ViewBag.Title = "我的工资"; + Layout = "~/Views/Shared/_Index.cshtml"; + } +
+ + + + + + + 查询 + + + + 查看 + + +
+ + + + + + + +
+
+ + +
+ + +
+ + + + + +
+ + 关 闭 + +
+
+ + + + + \ No newline at end of file diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Web/Learun.Application.Web.csproj b/Learun.Framework.Ultimate V7/Learun.Application.Web/Learun.Application.Web.csproj index 788ec2536..66e74bb58 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.Web/Learun.Application.Web.csproj +++ b/Learun.Framework.Ultimate V7/Learun.Application.Web/Learun.Application.Web.csproj @@ -7950,6 +7950,7 @@ + diff --git a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Learun.Application.WebApi.csproj b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Learun.Application.WebApi.csproj index 6d9d294f2..b7517bb38 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Learun.Application.WebApi.csproj +++ b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Learun.Application.WebApi.csproj @@ -196,6 +196,7 @@ + diff --git a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/PersonnelManagement/GzAmountApi.cs b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/PersonnelManagement/GzAmountApi.cs new file mode 100644 index 000000000..2922977a6 --- /dev/null +++ b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Modules/PersonnelManagement/GzAmountApi.cs @@ -0,0 +1,64 @@ +using Learun.Application.TwoDevelopment.PersonnelManagement; +using Learun.Util; +using Nancy; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace Learun.Application.WebApi.Modules.PersonnelManagement +{ + public class GzAmountApi : BaseApi + { + private Gz_AmountsIBLL gz_AmountsIBLL = new Gz_AmountsBLL(); + /// + /// 注册接口 + /// + public GzAmountApi() + : base("/Learun/adms/PersonnelManagement/GzAmount") + { + Get["/my"] = GetMy; + Get["/more"] = GetMore; + } + + + public Response GetMy(dynamic _) + { + ReqPageParam parameter = this.GetReqData(); + + var qj = parameter.queryJson.ToJObject(); + + var year = Convert.ToInt32(qj["year"]); + var month = Convert.ToInt32(qj["month"]); + + var data = gz_AmountsIBLL.GetAmountsDetail(this.userInfo.account,year,month,1); + var jsonData = new + { + rows = data, + total = parameter.pagination.total, + page = parameter.pagination.page, + records = parameter.pagination.records + }; + return Success(jsonData); + } + public Response GetMore(dynamic _) + { + ReqPageParam parameter = this.GetReqData(); + + var qj = parameter.queryJson.ToJObject(); + + var year = Convert.ToInt32(qj["year"]); + var month = Convert.ToInt32(qj["month"]); + + var data = gz_AmountsIBLL.GetAmountsDetail(this.userInfo.account, year, month, 0); + var jsonData = new + { + rows = data, + total = parameter.pagination.total, + page = parameter.pagination.page, + records = parameter.pagination.records + }; + return Success(jsonData); + } + } +} \ No newline at end of file diff --git a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Web.config b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Web.config index 2666c219b..b5d6fb6cb 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Web.config +++ b/Learun.Framework.Ultimate V7/Learun.Application.WebApi/Web.config @@ -106,6 +106,14 @@ + + + + + + + + diff --git a/Learun.Framework.Ultimate V7/Learun.Application.Website/Web.config b/Learun.Framework.Ultimate V7/Learun.Application.Website/Web.config index 77bf6316c..0bf986120 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.Website/Web.config +++ b/Learun.Framework.Ultimate V7/Learun.Application.Website/Web.config @@ -81,6 +81,14 @@ + + + + + + + + diff --git a/Learun.Framework.Ultimate V7/Learun.Application.WorkFlowServer/App.config b/Learun.Framework.Ultimate V7/Learun.Application.WorkFlowServer/App.config index da3352c4d..5a877a2b0 100644 --- a/Learun.Framework.Ultimate V7/Learun.Application.WorkFlowServer/App.config +++ b/Learun.Framework.Ultimate V7/Learun.Application.WorkFlowServer/App.config @@ -226,6 +226,10 @@ + + + + diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.AppMagager/app.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.AppMagager/app.config index 899e22885..1ae11ee2e 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.AppMagager/app.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.AppMagager/app.config @@ -18,6 +18,10 @@ + + + + diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Base/App.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Base/App.config index 80cfc1d09..4d8193104 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Base/App.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Base/App.config @@ -32,6 +32,10 @@ + + + + diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Excel/app.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Excel/app.config index 899e22885..1ae11ee2e 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Excel/app.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Excel/app.config @@ -18,6 +18,10 @@ + + + + diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Extention/app.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Extention/app.config index 8b47ef9f9..28f0aeee3 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Extention/app.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Extention/app.config @@ -18,6 +18,10 @@ + + + + \ No newline at end of file diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Form/app.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Form/app.config index 899e22885..1ae11ee2e 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Form/app.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Form/app.config @@ -18,6 +18,10 @@ + + + + diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Language/app.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Language/app.config index 739e9c9c8..12cf3982d 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Language/app.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Language/app.config @@ -6,6 +6,22 @@ + + + + + + + + + + + + + + + + diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Mapping/App.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Mapping/App.config index 02f4da518..0c82929bb 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Mapping/App.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Mapping/App.config @@ -36,6 +36,10 @@ + + + + diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Message/app.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Message/app.config index 35bb040b3..bbe5ad59b 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Message/app.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Message/app.config @@ -22,6 +22,10 @@ + + + + \ No newline at end of file diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.OA/app.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.OA/app.config index 739e9c9c8..12cf3982d 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.OA/app.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.OA/app.config @@ -6,6 +6,22 @@ + + + + + + + + + + + + + + + + diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Report/app.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Report/app.config index 899e22885..1ae11ee2e 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Report/app.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Report/app.config @@ -18,6 +18,10 @@ + + + + diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsBLL.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsBLL.cs index e03e4a243..9d5f6ec0b 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsBLL.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsBLL.cs @@ -176,7 +176,7 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement { try { - return gz_AmountsService.GetPageListCol(pagination, queryJson, out decimal totalSend); + return gz_AmountsService.GetPageListCol(pagination, queryJson, out totalSend); } catch (Exception ex) { @@ -191,11 +191,30 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement } } - public IEnumerable> GetAmountsDetail(string userNo, int year, int month) + public IEnumerable> GetAmountsDetail(string userNo, int year, int month, int show) { try { - return gz_AmountsService.GetAmountsDetail(userNo, year, month); + return gz_AmountsService.GetAmountsDetail(userNo, year, month, show); + } + catch (Exception ex) + { + if (ex is ExceptionEx) + { + throw; + } + else + { + throw ExceptionEx.ThrowBusinessException(ex); + } + } + } + + public IEnumerable GetPageListCol(Pagination pagination, string queryJson, string userNo) + { + try + { + return gz_AmountsService.GetPageListCol(pagination, queryJson, userNo); } catch (Exception ex) { diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsCols.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsCols.cs index 1dd8d2495..43ad312ee 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsCols.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsCols.cs @@ -51,7 +51,7 @@ /// public string TotalSend { get; set; } - public decimal TotalSendDecimal { get; set } + public decimal TotalSendDecimal { get; set; } /// /// 备注 /// diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsIBLL.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsIBLL.cs index a9eab15a1..9e8efd1ec 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsIBLL.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsIBLL.cs @@ -58,7 +58,10 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement IEnumerable GetPageListCol(Pagination pagination, string queryJson, out decimal totalSend); - IEnumerable> GetAmountsDetail(string userNo, int year, int month); + + IEnumerable GetPageListCol(Pagination pagination, string queryJson, string userNo); + + IEnumerable> GetAmountsDetail(string userNo, int year, int month, int show); #endregion } diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsService.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsService.cs index 10767fe58..5ade36507 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsService.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/PersonnelManagement/Gz_Amounts/Gz_AmountsService.cs @@ -370,7 +370,7 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement } if (!qj["department"].IsEmpty()) { - var dept = qj["value"].ToString(); + var dept = qj["department"].ToString(); ls = ls.Where(x => x.DeptCode == dept); } @@ -394,11 +394,11 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement } - public IEnumerable> GetAmountsDetail(string userNo, int year, int month) + public IEnumerable> GetAmountsDetail(string userNo, int year, int month, int show) { try { - var items = this.BaseRepository("CollegeMIS").FindList(x => x.IsShow != true).ToList(); + var items = this.BaseRepository("CollegeMIS").FindList(x => x.IsShow == (show==1)).ToList(); var itemId = items.Select(x => x.Id).ToArray(); var query = this.BaseRepository("CollegeMIS").FindList(x => itemId.Contains(x.ItemId) && x.Year == year && x.Month == month && x.UserNo == userNo).Join(items, a => a.ItemId, b => b.Id, (a, b) => new Tuple(b.Name, a.OriVal)); return query; @@ -415,6 +415,74 @@ namespace Learun.Application.TwoDevelopment.PersonnelManagement } } } + + public IEnumerable GetPageListCol(Pagination pagination, string queryJson, string userNo) + { + try + { + var yearStart = DateTime.Now.Year; + var monthStart = DateTime.Now.Month; + var yearEnd = DateTime.Now.Year; + var monthEnd = DateTime.Now.Month; + + var skip = pagination.rows * (pagination.page - 1); + + var qj = queryJson.ToJObject(); + + if (!qj["time1"].IsEmpty()) + { + var ts = Convert.ToDateTime(qj["time1"]); + yearStart = ts.Year; + monthStart = ts.Month; + } + if (!qj["time2"].IsEmpty()) + { + var ts = Convert.ToDateTime(qj["time2"]); + yearEnd = ts.Year; + monthEnd = ts.Month; + } + + var items = this.BaseRepository("CollegeMIS").FindList(x => x.IsShow == true).ToList(); + + var xmId = items.FirstOrDefault(x => x.Name == "职员姓名").Id; + var deptCodeId = items.FirstOrDefault(x => x.Name == "部门代码").Id; + var deptId = items.FirstOrDefault(x => x.Name == "部门名称").Id; + var ptcId = items.FirstOrDefault(x => x.Name == "职员类型代码").Id; + var ptId = items.FirstOrDefault(x => x.Name == "职员类型").Id; + var sendId = items.FirstOrDefault(x => x.Name == "发放时间").Id; + var sendCountId = items.FirstOrDefault(x => x.Name == "发放次数").Id; + var kchjId = items.FirstOrDefault(x => x.Name == "扣款合计").Id; + var sfhjId = items.FirstOrDefault(x => x.Name == "实发合计").Id; + var bzId = items.FirstOrDefault(x => x.Name == "备注").Id; + var shrId = items.FirstOrDefault(x => x.Name == "审核人").Id; + + var itemId = items.Select(x => x.Id).ToArray(); + + var q = this.BaseRepository("CollegeMIS").FindList(x => x.UserNo == userNo && itemId.Contains(x.ItemId) && ((yearStart == yearEnd && x.Year == yearStart && x.Month >= monthStart && x.Month <= monthEnd) || (yearStart < yearEnd && (x.Year == yearStart && x.Month >= monthStart) || (x.Year == yearEnd && x.Month <= monthEnd) || (x.Year > yearStart && x.Year < yearEnd)))); + + var query = q.GroupBy(x => new { x.UserNo, x.Year, x.Month }); + pagination.records = query.Count(); + + var ls = query.Select(x => new Gz_AmountsCols { UserNo = x.Key.UserNo, Year = x.Key.Year ?? 0, Month = x.Key.Month ?? 0, RealName = x.FirstOrDefault(a => a.ItemId == xmId)?.OriVal ?? "", DeptCode = x.FirstOrDefault(a => a.ItemId == deptCodeId)?.OriVal ?? "", DeptName = x.FirstOrDefault(a => a.ItemId == deptId)?.OriVal ?? "", PersonTypeCode = x.FirstOrDefault(a => a.ItemId == ptcId)?.OriVal ?? "", PersonType = x.FirstOrDefault(a => a.ItemId == ptId)?.OriVal ?? "", SendDate = x.FirstOrDefault(a => a.ItemId == sendId)?.OriVal ?? "", SendCount = x.FirstOrDefault(a => a.ItemId == sendCountId)?.OriVal ?? "", TotalDeduction = x.FirstOrDefault(a => a.ItemId == kchjId)?.OriVal ?? "", TotalSend = x.FirstOrDefault(a => a.ItemId == sfhjId)?.OriVal ?? "", TotalSendDecimal = x.FirstOrDefault(a => a.ItemId == sfhjId)?.Amount ?? 0, Remark = x.FirstOrDefault(a => a.ItemId == bzId)?.OriVal ?? "", Reviewer = x.FirstOrDefault(a => a.ItemId == shrId)?.OriVal ?? "" }); + + + + var rs = ls.Skip(skip).Take(pagination.rows); + return rs; + + } + catch (Exception ex) + { + if (ex is ExceptionEx) + { + throw; + } + else + { + throw ExceptionEx.ThrowBusinessException(ex); + } + } + } #endregion } } diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/app.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/app.config index 899e22885..1ae11ee2e 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/app.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.TwoDevelopment/app.config @@ -18,6 +18,10 @@ + + + + diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.WorkFlow/app.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.WorkFlow/app.config index 8a35a1af6..c25fda5b8 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.WorkFlow/app.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.WorkFlow/app.config @@ -22,6 +22,10 @@ + + + + diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Factory/app.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Factory/app.config index 5faa09895..447cc2fd5 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Factory/app.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Factory/app.config @@ -14,6 +14,10 @@ + + + + \ No newline at end of file diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/Learun.Cache.Redis.csproj b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/Learun.Cache.Redis.csproj index 891deb79d..b2ca7b4fe 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/Learun.Cache.Redis.csproj +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/Learun.Cache.Redis.csproj @@ -84,8 +84,8 @@ ..\..\..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll - - ..\..\..\packages\System.Numerics.Vectors.4.4.0\lib\net46\System.Numerics.Vectors.dll + + ..\..\..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll ..\..\..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/app.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/app.config index 5faa09895..447cc2fd5 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/app.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/app.config @@ -14,6 +14,10 @@ + + + + \ No newline at end of file diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/packages.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/packages.config index b7c0b0461..67f87fb44 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/packages.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Cache/Learun.Cache.Redis/packages.config @@ -9,7 +9,7 @@ - + diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Util/Learun.Util.Operat/app.config b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Util/Learun.Util.Operat/app.config index 4ef539ff8..d036c29f6 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Util/Learun.Util.Operat/app.config +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Util/Learun.Util.Operat/app.config @@ -18,6 +18,10 @@ + + + + diff --git a/Learun.Framework.Ultimate V7/Quanjiang.DigitalScholl.DataSync/App.config b/Learun.Framework.Ultimate V7/Quanjiang.DigitalScholl.DataSync/App.config index 3378e7f0d..aa6aea14d 100644 --- a/Learun.Framework.Ultimate V7/Quanjiang.DigitalScholl.DataSync/App.config +++ b/Learun.Framework.Ultimate V7/Quanjiang.DigitalScholl.DataSync/App.config @@ -47,6 +47,10 @@ + + + + diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/.signature.p7s b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/.signature.p7s deleted file mode 100644 index 804a5d4539d8577faf287850ea9269ebb94cd3ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9482 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
    ) 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ėFn= zjM4?@9Vo04vdwRZLZe?ZYjY+&OlcZ7Rinkg|MHV+!O&VNtou?@d)B;?}Ypuu>vz2Ps;$i9eRT}miHwQ{-Swvm)uVJeUD>VeKIi>UGDqU~H zW4_H+Qr&XOz0$Rx=j|Gsb{4tF`sJ}>TC4HykIDO%%6Y4dp?3@-6vbq4~v4I!DxNeXkCTfn1*0&V_RU0#Ao>x$%3w>9}VfD7PKTVn__1;`4MW z&k93}4_wPrD7RLbza0nQJ=C*Sqk+*sMXepfnuh0sb&sW@ zS(*I%V>i{bSDGQ?w_op&2Xv0G4qp8#)J-ErWP2wY$^idP>R9Ip^5GBc zZK(44W)|V~OXbRW*u)2T%nI$or@$wP8DZ872Rp+}x^t2=e{3to>m21>sly_-T;MNQm<0{ z`>CX)uVE=Cfhh(;Sbnv3$gv$Y{ih<$U(xT-Lc>}YSzM27GKj}ttmO{sXM{lPWR_V8 zX7V|1;6y?cfrtJ%9sHr5d=fL?sh8RNgx-$G7EhK$L#*@SK+ALTYcCwPjzSYW8f%o~+4(1d*EYL7`_1Wn z;#vG({`ltqRqvOR@#jR0PS+r8M-Y4{fP82L@}qD-Kr=`*Vg{-WhH##wLw*_3elN~X z3*&SF0O`5l53YdO-elB+u$R074S8omdU0?Lq&S|ig2WM4kodt05;tf^Ij(i6 zh~W28rrD}>jx>DlFl@c$sl=z#aD4&#-AbIS4;~w%=l75Y(-y-SVBn@F*@YG64 zq@$GhaHYg|yNT5NCer?QlDoc>aPB0WhY05(!g+{ro+O;x2 zBAi2nbAWJOAer9wq(lC~3(TNP38*FO&2DNsp@5aMb7!!5>m} zv48&pNe_|q07+ja=~42eULffqlD(}e2gK6_{Qf3L+C$PllAcY{ zy(GPWq?eKODw5tH;BnxqkUlJahrBP}CpLdf(w`Dc2xhxqlCt1>lQbQDOL{z1hiate zU>$0d7D75t`Xr=_r5%v2l+uuPlC+zoz0#GCo+W(~(qZXmkbX+~2-1rr8SHe6dmz1B zI-jIBlJxG-W9S;`xzO9_@96Q6OSo71Rmd;k{0x%zk@RAr7t+f}{-7JDkC1eW2dDc; zdW57~yo5v2gCvdlaN6eU7XK4cf+6`WB)^ZO2MOmO$v;BUBZPB=)w~%xn zNe`0r5t1GuDGCrgN!v)eg{1pPdQg#uu>DwwU`W1={$@>@uLA4w0A^bwLCAt}ltcCv^alC}{}8_91W={~~QNAd?r z`Uv4XLh>j|N+;1^vRL^?PCp|koY0sxU7kl=54tQ?z+~&E{bD!r2o<}`D^*rnOh36H| zZ#?gM@U!+oTl-1*7y5nByqEgIkbc#R(^(QuM?{GlF<+5wF!{lRlJ#@cNJpC5X@qg4h#Ac>OU3auJ@M4C!RxiSYDrpO^`~K}27H zelQy)&^ELiU5u`Wui$;?hv*UX7>@D(g#O2~0w1V^jDItOEuzxbX_VAW$JZ>dR?hrSF6`G>h*N>+NoYQsMj;p zYeKzttJhDc*Ujp+N4@r{*OYqQpsjh`mwFvkuV=$`lkkdLfHzKrKNrGl+wIUt z+u@yWhhB=`#CGVX?eN~W!*gkeccLBoYCF99?a*7n3xGcv{&L|j0)Kh%mk)nY_$z=v zXeH>k?J#<^!`Ri1=ch1kwZo{@4r5k3^nrHh@$Jyx+o89&!${Q*<5WA0QtdECwZjP2 z4&zfhj85$^HnqdZ)DG`MJMJ#STlbEnHrL0|Xy3p{W5Z@8(>z8KR|K>+3b`dQH1t)2`RF>ox6qO$)8)ID52bqz9y1>e0qj@5o>pGCS+hkdA3U ziw6gGr_v+q2RE$1MWFU!1*wv{*eq2jwN?#UWg4_PG^q9)(9Q-l)SwpLfL8a6r2F zHQYOx?(f@*I(vKid(!ROwxM-B1KS37b*56=(2mr|<`u)sd(zv^=}D*BdwWy;sdUeX zDrrye*t~x4Q0lb7kQdqvcXL#r0LCCLII+)(oGeWwR(acLoC)8U*CD)A( zjP&hF;mRzB+V>Mnm|B`1+@*4K6P@I->n2okcyl_XRB8CMo?R(&gKGv-Xl;Mb09M|$ zwGXa?1Bzswip6E1jXnLNN)C$_kEYY9fsw_d{Uf946tu?EXV?0baObU^{tiAnfVq zP@SpX(RAO)-nFUpuD)Sw3rkYNz3IN85tDF9YI_ef=xRWu(pEY|+}_{UGi*qg_V?@< zHr?t_Uq7kZx>SG99+Dg8jjc_?o6#ZSCua_Mz3(Ub<*6MG;~%ezS2$hi*!`AkHUK=|P=n@9&3q zaJVxyqOf+8RC{$#8}09h>*y}%tvJ6fwHAv3KI{Y@m`+<#V9ZT6@ zh~Pa^G9XfO+mxrEQahog$Y6s8x1NcXrBm=4q}T848Ca9XpNoF9Dm6Sz(>w&~&!RAk z0@4VaCzxTJWA8+1xZ%2OAS1&XNL3J8-!q_&LzHQiqgh91zyLLXR`-Db{!Sf)d{D1AW_}dRlid0NPz@eQM3<$eQi&G1)<3Rt#)Q?XePQN(M*iM&z|f z_YDIBzkcfnkvg#Afd;CI#{=a7p{tx017jQ5WY_wB~y;+;Kd?HdDc zJpTNo(RMSbRAJF*Uq7Zc5B2x-rgjbzVns(s$GX(6p1uK0(VqlpAQ*Mi)CWc5436xC zRQu|jn_8ag9|8t^nD8fYL?!XpVJ-A7=oToorw@089qUp%AOnoFmgyQ)N>y55S$c4E zs51pE)dRLs9WDWF@99+ta#4y!?OTW0S3{$h^!4l*7=-c+mO3`ot-!Szgc8!b`{2{U zij|QymFDEyw+JoWqvz|!dNVuM)#;yL^;?De8+`nRmA=*A4QS#`Gy^idV_1Dx zmA79jU3*9BjIYfwH1;rR?}Y@9Y)Xqes-5xKT@MAOMuyRbVe()Uy_KoG*!Dng&j`|P zLg`y-pHge6y`^Z))-%B{R#D!?p8n1hep%6y!4dTXghy6oa(qVL$WCJ{S7uR`Y-Lhv z3AbV^Q%g&@6avDV}Y?9o)Ws7%u&(?a+Mq3#+`X@LlcgBYFJ5$%mE< zpvpXJ5PBaBDA0U(TudqS@aA4}g=R!B@q`f$bwaO5r`8RUY_PAzrboyah5AUEHl8o8#%dUQ`iA=Vs!vlVEk0cXd$~{7fC)$=a9;g%4UmEe z0eu(eR}7>yis{+d@AK5+$ic#P1mgkPjFjsr+J#bR06{;4JWjWxb*Kk8JAmJT_Ml$4 z4uPZ(4FVS>H2n_L4-!p#7_ES7CtyZFj&)W5ZyDrMU~L4_H24rZiRC3g4HJt4M5bDv zrCB}=Z1ltb*cxj5bwF=NXoiMgkM=?hVO|S%;GqF(2>v$+Qe5sfgz|A|J%q-!+y>k| z2)UM#=*jD^)Z~5ok)~yr{_*zfvr50c4S8aMAp6}&2!$XChdoFPLkis73U^G%%93KD zm?h6}#gHH&F)ORAR4gm?;9M3-OC{ujwA72-_yQzo%1wd%+zugMjtLPYDHl=lc_p1w z3m2Cpmx_`{jNnk0m|HC%rBM!85GL`Vp&Km3;Sb&sFa0GM-UViLq0b`x#xk|tgPI97xAk z_^eC0Wcd(LiICRG7H}Ftc}TTLr#_@+JopmGhQequ;d;QTkRzAkn-dAgO;RsOC6f9{ z>LY28q#=@q;i0(QkVq0FKDYxR5O5c7zFbtZ6CtGgtm{L6^%59>&CQ33GeYY!@7hPWHHD193 ze{T5m!k+|xe)#jjUl9HR@E3x=a29TM-21XU*&d&-+MCyrr%=EF3{U_93_t(@0FZzpo5iD)afu zu&uJ7uMAr&3;4>gy|R$63|lM<`xJY`7_mgm5F5k*(I%=y4=csI0sFfw@aFq`9-rIi z^+`Uz&*uyJ0=|$h?De|HJ2uUmpN*RU?jLR*?i_9#?ip?v?iOxU?VCQY+8eXIYG=w0 z;Q#q1XVQl^E`Z-#ZwP}VBGzQt-Vm7fxV@6!7Yu~pZu0Dng}ea+?e_xK3s4`)`2nuv zf}o=0B(S37uq7pjYpvwMVA1FGLUA7T>Q%3P_3Boyl6v*2*O1RAd0qHQE@9=OGX2UW zpj@CTO52qquafb3yzshQyYC?W{X7o#AAnDSB$Blsw63$g9>?|Z51zcw{r!wXcm49c zTk9_VX7*kG48Q%>KhOOAm6!g*wY&eKRX1E+e$Tw$-1y5EU;gob-S~WSq(b~+Fg^co z`>y@Wq1VpIx$<%EIcsLT)sS`dZ#}<1`c}mwx4-+=``b3H3SIN#Z{1M!iLJHYOx2eC z{pSltJ~24+zu!Oqli$uhblrk!rJv7ToGOg%dgPkftCP=PV$n4+f0G$Y=SVgF)bcg z8&iWf3-FH);eWL;)$v*|pahy~V{2hL*w+hFqxFMlr3MykoinGWskf=QzO`|7D&EqX zFRT}HI?w7G+DIZDL;6s3SD;m>jif1y!s8UBG3 z{AFRH0x}->bHgA0<&*?}e)tQz@GqVb3c+6(50da5g>h3X1zN~ME@f=aA)~O8YD|Un zE2+j*$e@yHOgAAVCDoV;=~GgTsgMCB)tDhdhLu!SJ|7S2=$DgAi0X zZvFEisT@iFw)s?!PyfCJR8C0$D27ASr_@Ii{t)%;4A4X{M14R*A?l;05dqpXsc$%{ ze56B$B1u$s*w7+LNsi!B-d>9|N15K3x%9m%rfH6;J*aYMj*{enb(8t*96>M@1OTRJ zrb0AF<7KH zhpWP0Az+EV`_J99v1s;@%X|V^d_<@m50>l2=o#srq0MH8BCvr&};$Cdh{DHOYOQ?47|!1aUq9e;Jl^MyHnfnxeNjd&8};%YiMe!Z>@_r zBD7sVJv1k_b+oU4B(`<$+}O7Mo~<*NEZNw(=8P4mwJ+<4*EiNdDZ6&{jl^)+U~a6X zv7x?qPD3ku5iPFHDIJ>2c%Kh)6A{uWes~|NqBt-gnckZMhGA z*!aZXLV;&zW6@!Cr^7+`djW3dlnFYw@UQDc`M3Ctgt}vMap5_lDyLrV^>`;hAqh#u z&gmJB4UUe)2Dity4vr3N8=fnyP~v}>l~RMtvA%(r(&Dk*>S)iO6u+D?@vLtZ)9hzCpIt&?-c<;s)TCmgh`!4sb2WB z18ijPPzo0`FgOw$))xbnfA|0Dmi&vpaO8o?KOMdH+8Y=4T!)@7c7qZ(!Eo)-z|d5A0pjSqJIjwHu(%_osS> zQ?tex?q&_7MrJo}8Y}KOv~4R|c&(ssGfCil3|anLN#PLM3`5_N{{GcHeFMruZYo9A zH^{$_D#1vOwV990KY>)R5TSi6AKzx2<0~JTwJMbde)5)s0=kddq;sDe4*_7y5RuroT|Vy7khGe@jTsHj)-* zIo{m^BjX?pEXD|ij?qm(Xchjgw`ymI)O9at^$;!mZ#B_OgB&{~+d(r%&}nsKqVKAU z)JeMsWsK}4Wt#`!W3A&{91_v(ZY0=Y%HC|yX@LtNZV|P$}rHAnk+o z@Oa%%-QlsiRolqmjnIW?7T8?{(jCMiZj&Lfg*A7;S7HP(-+;Dq-hOo;!FztN{TO9u zm{7PaalLkvF9G=>J=#Ll=4LU2zE= zpc{jlq*e4e#5PRW&|A=dS)1$=9qW03we10FCiJ)^(q9~Z%ZH1Uk+Ns(8Ab83m_T**Nf)BwH5x?2({=1-R&UT3iX=8^h**49BpGKL%r1E&0A1bx?ZSHgYdLWXu@W`|JOW zcmLlT@BZ)K|BwHDQ6Rr0=x_R0SLFZx{VV<*IRz3?MDYtxc}ntEU$Xp?zlH^`c<{ng zegv!sMM0Hgf9{}L)jcTGB{A56VJj-Z^XMU zwQbknz_$AGcq!%tBGz%v`il4@EO$i;4f*=MU8$L!BR#u@Vrv(-$IA=C_093t_?-GV zO)X8clR&mmWc-4APe{$e@gSB5Bkt8})~>6c9QB<|-MXRUZ}GJcy?J=`Luc>) zkI7&E%Ega8@}E}>mff=Uhskd~^T0DO1ivgW{{ z1=syy!_E8OJKWp<#HYRxed@h;XKnw|tQ~J%fBs*+_t*d7bB8~=`<-|G{1vqOcYmlT zn^JMvn@{XN>&*r6+~sdPS>$^5>aWya6a8S-rfL2MFFyAZPkrEOFDsw=r_V&2@9Vhw z@~kty{l?e7_luU;1xN4x^{y>HiI>*==)P|rIM7;sblH-+vbpd4aR0+^Tzl0D*P`@) zz1a1c{*Uf?=D)6}$vRwyUYhgp2les4oOkPndwzG;Petg_!mSqyerOR-ybPMOEXy5r z=av7mX77yTty%whYs>x94!!X!pZjP1qz{!%aTms;`|_sD{@|DEmJS8}(Dskr|G2m2 z?#G($&5p0ffJyGv@s;rv2bUe}xMcCpk&&Ufvu5?C`|EaT&#A6=aM!G%v-&W1){wIO zYS?XTc{eQF<(+@?P4PAH&rcuu z^S^I?@ywr9)PLt|Z_IpQ%kuNS^0)0X?tQztxc}Gf<(9RTG(^)Pzjfox8FeY`;>;}=|XG6pgg?ivH0abWuO%FEw&ow@lZC7%d*T93Y%b@j7{ zUc3CQ+rplru1DtoV#a@6cK^DnL4iOOe2Dp0hUhjMF7w^yS{Rd|6&DrOieV)D6+G{^&;Hr;-N+sjH z5$1;R9xiSwWszl7xYhY4U89R{>9rm3nHLM0dB4#&S8TS7B0v+JqxBwnl&y{Yh?PH2 zuR-JRgUq-(YIFhTc$OD5N1&=w`Ab7=;JoO0%1+#Zl{f3vQGaqfg zhv!z!Q~T8B=q-34H$2C&9?ZF?9vF~G|NL=~{uI9fgGfBt*wZ=50M}X-7+7j)W|yiS zMa5~3Aj$btK->jdtaQR1!*9T3h!_#QpG{QcGia4OyI>91D(0md`>3DaVh~RG=A8$i zdfa>-1p!4_Qh>xCpAQ!RJ1(LUvch2ed;lk_8808V5!4ufaGUU(LAW@fJPz^^J&UbuZeZv4(aeG#IbMq^0k(|i|EcKl9eL; zpJ z_TSE~&m^ZQ%E%T9r%v8}L?Gy{?PRh#k{NIpMgRs|nz(>+_~R>9GMHp;7t+C)gz_Gk zvF(G0{W&g2M(k*r9%T(Is$fKa9z1w4@Pb<6Kuku-ZN-Gt=ceLROQ)J5)&7l$b2_i- z{5|h1bcnhT7(f|1O5dmj8>;U#g*YUvw^mbnKMuc(A`s_RbQ6H1)*%2d>lE;?3^^Id zPUIT&k2q&=0v}kIkqkjm8*C;ZQetGpz(Yxoh2xn@%$6L0?X)`Bi1^|4VP#6r#&j~}I8SJ+r?6~+Vf%fkptlU9cmlQB*piI0; zO)Z+>tae+7e9*S*)%r)P!#HC6iE#l(f3hbWX|ScEu_jT)%L5Kbqug3pL7m0aGFxl6 z3Kir+vg_UC?31L>M-J%6Q=IO1KfWXGGvqhAS--)P)uAi#zNAQSg6UQqS#Gw&9nE!; z=$QlVXos{xXM;;F68-^v#65R(P@kErhGdspaEy>*A4WPdPdRg_f4Bf>f9VS`I(XG# zAPH4|%1AgP40Jm%<1^8|l)%h^ZtBr-22FP!}L6|;bL~a0h$H+hk z0v(~C0?3G8XW;9nNOFu;lz1p8hzJY>2+%NpTZRyUP*6`gM(E$~b>QP(4tk-AZyADP zCgX2j$%ESFT&)|10Hojl=mHo8=MvV*rmqo_7?Q{jScY2&zbUNA7&l8#_?2Z6OD#rw zCJRtL#WEQH0iS7NX(EBw{yCO?Z+1Y0_AvyVpqTm@6q5!d0r4{^#`oV*a>o-!?6lWE z;};l&q|Gnn!ysAm$yT@wR%Q7Km%}DcX6KWE)3W>($dFhO_Tj5V2sHC@m#1>PFO6QI zAcy?3j6BWcX}j8*$}etJG7dXJA4PmRCviwDUS%g!L-w$hTQpxore*u;?B?^%Wgus3 zPSga;X>G)aCa-Uo#uJ3_IYyf4fl zhQ;1GiR=r-n%baw7wwTQXX0m1bMza4c$)Z~eO6A*q zwsET9)IzL%LPp`Dncc~JAIVzun^LAXg%wLhmlT&PoZW`8xG=3Le4$iRxauEf)Awhk z@QY01kCchoJsVJI+^1qh7%iHk!eTl?hLdQD&*>(wWfTYA^2f1+)H+)sQN|W+5PN(k z_NRM#zuPiT3d)iAe%fAe2+7+>s`t(Pj+%>mxDFwWnSv!?Vap?nq}VC^Jp4*tWsJdQ zK>&`1j==BLZ}?4o>m=6$iQ-q_H^2*U0SLtA<^=eU@f&(l- zsB|QYrxiQtWc}21Yl6yU<)SwqE-KRDt@P&h$`?5T)aO5;52(iw$wZTjMi$5G0t_Qa zRtp~WOF`&(JGdzEYe8L9uQ=)MrEF}OQ?PyYn7>c?ab7Vqz45YIXULvJH)fB1Nl&RL zO2%%^?I`mhruUL+rGY)OOp@%3g@H;MsyH*qZ2Oks;egG(O>H1$&wDVgVu2>k`%53; zCdLyrYt>4L@JG@}vQlQ}8JW%U;%45W`N?MN-pxHPbpaFp=mewSQW+xv2_KML zelm7hvbF`H{;1@Vs|eJkD{1_Se^k05xQg;z+1H(~H8@fEbb7 ze}&#ZT?zky-uP$H8&QJ<_{E=suU|Oe7xHuXO*hUm{I`cE9N(>oI9)a^yGZ`d^(}Nl zcGLeD)c;3ocf?rZ#|1a*B8&5USgb5^8GYlXq5vvmceK~B#vv?t^V}n>hP|I4xmSTl%T-ETGx#SJxfc&7%6x>|s-rusK%PFl$B}xC zU4z)FgD~>|3TNsC;7qTVRq*pD)k@n;U=GXpj1FI-Y$mtv@^S8afM9F02e${P14|9$~OvuS;0hRkfI%8_tV>0Oh1^_` zAel<6EbAPmx}G5oS`*a6^>wfLt~&6%`+UD5lP)UoGZ6TtEA7jEaLAU|iyEFlsOYtE7qo}2CyFkL9^MkRX}%Y} zo^mmEJNMf1khkhJ-gG#FG5`nD{r-f|pl~n|qU!ufOosk44e;{~i8B$Y2V6WGkl4TP zp@0x4|K5TM#XC0H0A46Rl!qGz18)2&9vw+2VXg55FUu!NgLMwGJ#?l_5B`AG$FUN; zbVyuYC=rHLFV|G%3|h)CBoBH^)+M5mN)MA5zm38vk>hm8-qjqX4V><9%y_ z$Hb%FR99#w^W@)4D>g(ByFuHZ^1EO@FRl)25X-5Z-T7!<$gm%b?SRT^fgNBM$I(J= z2&%PP%3$VBbV|^~g$~@8j*wBXpTH8nYANlRX0lt(=>~9>8{b>{I8ifYCFnhqNF!gP zBk!4DN{d4+gB>Bej$@KK(Rkz~{LmVia6d&trtdM`y&LZ=a+-Ya8Z^#4yTj(Y3c%^; zexIZ$ASj&f0-_H8hs`TG5CFe?aJ+eicRYkQ1EoQx$S7dMbOUsM*uXkAivDr~3;Ks+ zQK-GB2D10hC-pdh`8j3K~ML!VBd@X zA$D-jy?#+v@053K?)@3f(?pSdYAG=!9jZKg>J0_>C5s*NT?}f?O?Mis2a#rx-Y;63 za{-@;Nh(3vF`f^eX0gpZxZ?KtGLBo=rs}vbh@z6_rs?0#Zw+nB)UIk#c{Vt9jNKWKz# zw-`?dDGt3CTga~8rNF^eBp$tnq${J$V5xpn**tS7dadt)MwnVoOw?StS$7BTtr_E& z-QU!>FJeSIPpu33W9#C3bjxFaergRDv=1(q6ZJg~UGG}H&9@^V+Y?;-&#hrj0D!_+ zjR0=In8%bC!pp-2g>Z2}%^*g`T!s)XPA)#EDHoL61mOF@PLZ}TnN>!83x7<)%S&5j zo!99Ej`{1&v7c&RTe~|a+WM?_m|Sf#H-sEwGB^ zUPDssXbyuHrsl%?WqK#~Y$?^eOLD|&n=5#U%_uRY-6YkYJgb~H1q>YK3DJw9C*QQ-clJO8cm7AA5_YX%G(B05?(mDAK zF%w6_JgNoi0|INh>byX}6A#LKJ@Wc41(F>bDb4}mam!A2m71!j-OVU(ugp#_;y?V9 z`)n+Wozs$;a zj_g!$Yx9-$rhslb@s{MX2|klT8xwBVoHS!R$Xns4FVkb_=LU4$vSpa(&pl5gba@^v zxVk^hdIO(IL6a%N-C=@2;E9a>@ba=)g#SB_a*sgrcS2UzVravn;Zh;&N`j*^(iZMs?kO?T z*zDjw;V@4(-XNLKy4pmcHR>O-q#y(27KDy3={zd=`k~Zpsxi*bV|j2{ZeE5tmyjtZ z*UQ{@F4)M`pq%6GkXEv8g9{VW`m%L1Qy5#AFt1YMWPo^33#NQ)f3_HhW6X}t7gy@* zY=n9@V-kgwIPZ>>-X|GLRosd#t&>c<9p5)Gc>m#dduka$h>JgQn0{x#pOVqP*cbT0 zy84svb(ZEFAOc`$xY*MRsEU&xb6-MxF9&e}H%@5|!9;*knnIdfpv-@32NW@H5wjLC zS-&%p0l;YhgPo9_{u#1U1(X5BGh`?F&zz)x(Z3_$_vrZIsZspm0KaI!FXH{7>A)aj&cEYU6IiWN8YCXMA9i`8`*V=7Dwn;Y@5GyYpI!ZsyY$G%?aspnp`p)Z~-VO;L{u!&oez!Vp+ zfGdc-fe|!F)eO5hwblxGqmx=G!;jU5)zns0JX`*5l<2;S#C1NHJtLV<*%srMF*X5e zi}-Twpj$S!xlbIMg;CLRKrBo`@N0w$X4o$(6t*YBd?;**yd-j+XN6fzGn@5PjRKn~ zjd|h%$4555Y!Ig>GETnEj_X;`GZvZFK~KIXgyw?Qi&o}Db>X?8Vb$9EHgc5b<03C{ znO4S3IhNu+r|ZTJBMqiY)@yIZWn;=o<0tr1^&l~~mL+9hlW@7j-PV_p@yOksc27En zs$gI0vhQ~4mjw{0&z8@{Flzau2QRG9% z$DOQ=BLsU>G!>N^e6?uPUC+a4+*d`g%C7C_b!F)_rr%G}ve#6UmUtoBk>sp{7-j;xmLB#Rv^Dwrt`AJ zD$B2fU#rgp76g+)%NK|lhRsv6@U?ag8qf*Wco$jj&oG4EO5|D~#fl2C#G|#x*6aBI#;3@RRmt&2i>f9f+^WfUmvh zgS`a_x;^IXDLm!aoXS$t8mjjbveyasPKOgp0dPXG z?}Lww41&T5IT3XnKNuW@)QBnyFbMh21_vA@fQJ3;VdH~P(%>Lw#Msg!8fXwP^jp_= zwXu*vKXEwJucX^;-g$5+3?jxQ$`647JUss}8#WD&`x=0w*#mGC z?QdEg(~sq3j)MQ+YIWeZ92j22QXI<3!_9rH)wxfLT*pPg^WSo%3;^Bfl~Vqde|ma# ze`np~Q=Y4HIUg)Qz4VnZZhOziBHGGP9e*Gj3ke>uzwCKSj?JL8dDgJW`H7GjtIisc z8Y2pnN`#y&hVl(2VW_7epj`%tyDC-Y;4KV>op{_VQM4W4fL%YH~cEu$Vf?N zPT)XB6I>!^5~OTYrgz{%CAg;LR9GJ@svxY=i_bhysY zo5YJP|Jz)>?@IDmMFJ3j2Lj{#zslA7i@p&GHSI*99^WQ{>-{1Dzpx)fsvjVDMx;Xj z@@&d-GN%evOj(WNx35zE2NG5J2Z^foPbDh)+2P#<#cUB zpLe59viKA#YTdgY=kOO2_GKGHiw&^>AU(Ha(s@JHM85hW%r-V7wsWXNI}wUnLIX zN+tTX_PoyRS@rT?o4jI=Ij-jzPm5tVQmTB(wtjsQX?z}vo)smqV=Cpk@Fh>WU}wz1 z+tA9^CExE=E@mNr?NZyTVR)s(Ys#&f0MI4heexg{b^dalk@j;M3GVmqT)~)&hkOi~ z;AAIY-hRQM&PcP!|Fj=hBq9 zM^-TzDF!OMxi4Wn8{rv!YY;Z(cwgo?e|!XhBR8GdHK-I5pg634rW$m@K9zrDpI-~< zXWxb4;pRL0F3fT9Ka>6cmZ&EDlxnMb0fB4&NKd*nAMGR+KC93(Ie!U0=svVUyT<&GCK}Cp-T&shMHZB0E6wwMMifS(@CA$V)OPyIBMNnxpIKC zxTu$8w~=nZs~;knN51M(=)0Xi-Jqw%X&(CxGSN5&5M-WFqzl!U8YLwiu5~m z&I|qq<@0zRrBoep&l3XdzY!HVVnj&J&=O8mfkgjpY!{AAR;|rNx|VzBTLwR}%g=c0 zf5|S0=ZAQD$JyGa48RKkp#N9w@)v#o(dqxY3>)mCnmkle@J{5IqfLN+|Kn^{lzPn5v}8sPtgAnq(S* zI*?GrJT$7&k1+jLd)Z=GD3(*<-a zuqKK;6S^N&Mlzv$KelUu1?tG+4vSZB3z<{7HE*!0rNfb(0XSIyWC1>%{vW(R$e_nU z+{5n)0LVm0=r3a8irE!yI^H^ceix(?|A5+B;5bvouOZ8?4)A;WYwl7}UG3y9xx^*- zA%GaS1cXxp;D@pT%%^ur`{P|wpZ*5~Y6ZjNud}BXyKQT1^@r>OFe=gqQd3-j_9EW5 zwI9I6&BMiW<68w{<#Jj9I06E{FEmj=P&R-C!1}F&V?~RQUPxdtDcZLWo~Ny3)uG3& zJZFvt9~&#*-HelEYZ?}SaeNpudOCIbna@9aO+%#f{*9XK3TAWDClp^FqOS4_5guIM zAl9L7(@+XQQk8ZSSkb7+3&4HlSQ-6^^*--zy#>1gW533t(MzFEd%ooFI;~%ST;YF2 zSil=ybP-kK)0`v=d)+w*j3LMN` zQ3@1aHmmH}hG$@3=k&ExJ#5$&INzY^x`%B>2YvfKuToO-J56_F1+f-o zbvBC<+AE!#D{OHuymp*EI0q_`+qbt2Nlgw3;zQx!ZN$u5Kbd(^zg9H-rK~w?e8E95 zfb6Wzb?yf@<4;Z&76l_Ee&BOie1~P#Ji+Ih4+R*-Myzl-YZhzpM zV=E2)F<}j{?^x(j=RSviaXTd>l_+FL&^44AlZx4_?+9GtF8MlwGF}shRvddpE9;#4_b&W0N@Y z(4xo}(WZ%&hRLIWLF>S3^LF?9JW6WyA)34DT|{6i2NMFJ)y@ z7TX@4OSAKi^3$64`N*l@rX#sTtwPXB+eZR!O@Y&}HpvWi`DASiF!sBL>Wr{9&%Fs} zP9qZR86=m{f?FTP7`hahlQDnI9`csJQ1M#_9<0Tc7I)_?*xy=FtG3+5Y_LC9J>0|XQR00000GEnnM0000000000000006#xJLY-wUIZe?_1Z*pZ}aBwm% zFfU&&Ur3lAWpZg_b1qh_eFaop+tMZ^I6)HJAp{8S1or^JwV?^_?hb(j0wlOg zaCdjN;BJk(ySvRH_kT0*zF%k7tks9JtLm$&uWC2@bi)xteFtkhdjNjpSK)Rq#RNXueX%%f2c2h>MQ4S zUUbykDO(di;`HoqlG1kX|8hn2MQ5joRVq}#WofM8@Uz>EOhfFV`+0S|y^{=jIVI`4ZdWu-@qQ`O6&ol6Mq2pBh40(ir^>C@p@ayg zE!j)2&(m_>*Lxf!F5$Z;HE%0M)LkrLB>e(!@(UXJ`3^~B zHB(KScf5*6O7p*HE(*q=Xcr#dOCR*inqcAfCgNt!zus0cE0iZ7NJcUuR(nkj7=OKN!$32r^frx4sR6?JaGEN%9zjO=ra?8@RS5#?J3 zrF!*G<^=!H@yL${N%Ida9G*9YLo>(q$&oO>9*x zlK$fBSkN{Rol1UmH_rOddKQ-8LEqJfK3Bsmw#}sY!0%Y<*7?8kRmRsk6n3Sf_*v1V z^r04svhD~b9ilcbwF;Y*WrAI)l<+lP!m(DF#o!Ml{w(iVe$Ohw10ECuTQae3CV83K zkmC+a=DV6PIaBtf;3>jEH&UfP6m4cSa>NmwC9{kzV>7Acssv8xtVk=1!l|}jqmIu{dy&4XjV!X4VV?Xh?&8mRK{^s~DgQf}`oIh)1IN%JHUK*pYOgCR)(|E`5;b6n4alSA%;mqz# z%c`xP-mQ*;v1Wh6$-RzG%c>-nz_kvGu?9&t;0UxD!uvy(v9yTEDkb*wncZE}JT#;8 zNI%i3oqyB3uh!vPM(48FhTr{~yBiF^c`WXAw1wfSHA_3%6p$XD?Q_XFq_q&2x`M`e z1;(1gjp9qY?#6lB0;-IPD;Uw7sc8_db5U%=P`~EUhOA2+LF4=d{FjeA^wo%6O(XpayBk^tDmf$|^Jk#8MS{+}6dlG|MI6-Q zj+7-vP{SZgnNf`F%ct{7OK;m6_d1@&`ToM)%B|`yC_uUK9OZ>{AyT_~l2fYSmj+DN zaLI-$Yn)CJ8)K~bpe3_Vb=lN)}@|?NbfuB{a8;?t)Gxsg@F;6vNH(oQ!YdBB` zS1+{_C()uHnIyGgH{V=4ejT7Sa~24=)UBZvPdw^GaTK}{cCc3P_>Gl2y;3#nW@2$a zIzb;EI3$zopB2%_+@Iex)4DyHhJR*@%EAr#Pj1T=ww2B%KZJzT*+?Xot~*vOemZj<+LUGhLyOr@i? zy99`%eZ#!5P)b`|PpWQ1DLpfVZ+Q8k-Sg^gruR27&Sk7u9PL6SI=Qb=U12+dZKi3} zrV()5U<2`2-j?Xtl56Z^(WOm2MKo$Fr>1*rD`%#sYb&RxM`$Z&rDqOZS}K8d|-CH8qxXyJmoZ<{(o{rbiQPO#78C8=REbQsGL z6!0i{sLX*6P#Jnqw-2Ga{wEo3r1(tk!z4p5ZC2u&V!fd+bMgMl58 z!)8+LColrP0Fn4s!mhY!K4>=jOQ=PPDOl4x&7{Wy#rcKbvY&3XA7bt#Sql$S@WQth zlj%zCp+eLKP`B@-ZVT-(lM^hq7_v;k{YuLS5f}AwaAMSrSV*slIriuJ~RjNu|Kgt)YH014^;_bF5>MF0cOdb5J&)Yf7{hYvX$7o~r zi@SQ>0j+sD{)#)daVppUNelR|Jh;WMp-_L?fg(S%m9GeN9R0aS1xJ2-l65&<0Z8Ef zuxJ9!E|Vk&+ylAAAkTDn(PsS1^=Z*$K5#bF!K@#^;c&FPNH1aUl7DxjVkb z%lMhu{x?T5=f5(ucQ*267zsrRXcN4TJ%1pR#;YvHZo9pmdK5m@ma=H#wR>?Y9U!(I z+0p$J9j5Q-hGnc6TEUtQlZptH_M-`ORE1990OMtD7K89Odkh^w#9$yMX+BoxJYU5j zQ*wNwQG5xb6M*h(Je+wNEEZNGrwF^g`b*)OuEy8sS}?x6An!f9;$UGK4to)~2>g3K ztsg8^R8U|UkylMYew%skrOea6l@|xxnTSC>h^HR5SQ8?UZ2RqQ2kT_2r%qytI=ZTB zrd`627Pt~WZkjrF!fC8RH&r_Z&(qqqFEu_n37hYK!{6~0P&~+HcM8Psuk1RU#rXPt zkHmY5rKn7NV%o=S-RcKMW6Xmyp1MBc#5BQ0h%#+uS3oXvIy=Zr4yqjgq?Q#J64*S# zvo%k!+o^W^0__eck*X3po&8#@-r%*rQGe!_xVu`WPqg5ry3n{ z9f=KJpQ>2ftGuV6xoDKyH@W6&o03-?0!sPBe%*BW&V{t$>*!KgVWk1edyrT;92PAt zSR^1ivQW3PPYNR3Nh1My+esq{(d(r71c_)|jm9cTby)~dRc<8iq@~s>0ThgijaHon z@3lf#+uq>*&MA2KZ={OlxkETDua~ys@0_9RRX-h)ZiYx6qHjVd zoN?_{r4EG$h$81d#_^zPm^2BXwek!kf89%W+{Ccqb9+%73LzlU>Y({-?dVdpj!&dT zRVU^@B~?7Sg4oN>-6&)ij4CGyNYtY%7mGPZ=lX>m`_R0vW#Z75QMREQ$!2Z*Tyxs# zenY!|r6LYVbpN)Fs&h!$OY~bq&BZ6x-RFvo9=|JjJaRPiCNWufcqh-K&tw`KG!r#h zicB$OG7aiw$9D=hnT~n_H;eQ3e-I-WG`@k|273xQwBc>qA}64K-G_ayO_u^q?*{pP z_?T}MubFz*fWPBIhVk{LNrl3AR$=xaNM=q{CZTEAig|kfq={lykH48wH1r5L139?O z55bV+IH+xrp{`5kC`?1YRM!;!4Fb-se(b{PO*8wf8UGTa@bFb&dSDRQ*JUGtV_=6R zDnX<1ZY_#d$LH;DYTjiDUv_*4LEr?4RDC3GRO{R_bVh8Wq3^*3#PBQrP^nQ*{; zB*FQ%8*AkJCc%ERLvN!hahhLsU$NDvnW2vg zXkFzMIZdeTCuftPDK*5Pq-Jnz=9bka^7rN8fA0?sy_x7DV#l^0zy6dTd^Z8%G^0z- zPQ$cb4-PFk$t!Z4P%BIfJ#DN`Al5FJkeBvg@<4y1XznwshVJ>}fIU+rPj6Mu_{LKi zySW&z0ILfJ4sX-v(&1!@yU7__kZ*kHy@4pg5%+MVb~Du7jdOQz1;41GYj;JR zUfuk{CJDQ!gHNO6X3rLlip}fAm5tA)bt_-u#QmrF4(h>_({p)&b*;ce)wI&rsvh4q zwZGCXX5J*&bSAKSRphKr%65LPY{%9(@%`mRR_s!+Y2AsXoq2=fN&`WgrC#?!@(nCY zlVW>%6Pjk*J(8uqqG(}~uxWjUtG@QCvl0~7B~qq&RtRUQqYmCwq{tmt%9VdAV2Gej zwKVVwJGl!|sye-v=;{GgNQ>u3l zQBNUOk%wiKGW8_m7$hjM*3=TXUj(bUAuZ15gJOp%MhGOxQYX90)}qKCyjONwIJqck z{qV+euqQbI0?{!C&O88fO_*gV=4s~_;h7s}S5-}`M}rI0dq;P@`@C;C0Az)d`8Lf- zeZev4m&OGQ6_zG+MABsitEUrWc<5%vRiI(n80TR>B1QAEqTykmSfF8QIOKjmAVsrk z+VcrR4%Q`UoA~X_7f+|b;lry6`1^e!0r#F^;>!x0+nK=o{Z7xzHv;Z?DNO^zT8G9Z zrPH4Nr{kh>u(jda#B?*{o|iNN?i0hscQXYK`^*CF^LlrD67v+t1fxEJ9Hn$Eht{YodPd@_RZ7@7U&s!t*kstPpJTE_D z&ppK@gxT1jjq1ykGnP$1b|;j-XeM(@{B+3?c;Ho-_voYlgIGVJX<>MA#aP>@>;X++ z((V{>v_rNW;CP+pY-q!~`?h;`oHRR_Hpmi5SoC$XGon^>mh;XwjHO9hSpK*lR>;^c zQs+QKVCWbUQh{04NpL)APD%^fh`Wwz9Jd>VPRR=iN?OlYx(#kO9wjgPQ{;F-%(+=L zJL;)H!lqxjO)6JoIgl6e8TF;+)%4h^rAS)4Piv}f%S1m%rK?9p%HPIzdhJc2>zl)# z+H3bD)?(+Mb2s#`H8L^(>Q@?f)#bKMs9s8PA=`?B93C-Pxqbb$Nl-_bj_Ku^?vD^# zn$`ZMp#yL&2{_QfMzc1Cy(RO)~L{COL3EEr0Ifl@QQwiOgq>h9?^9A#-Ndd=}y}qRPu9;1Rcg^5k^Q(5oJP7E^1kFW2gF*C$vHi~O5>m|r`dsWO@H@s%eNHxM^twcGTi1lA|H zL0r0n4@?t&xZQv_)aBmo{oHrswKnF(x!}GiytwplN@RYma@~MenVeskV+O=j0AjZ9 z2{~8ydCy#dWjk&^8A3Pk!EwI~ju;Itsfhh96BHet9arg7Ha3nKY0Cr-?zNMKw5cJQ z2lR5`(%Q=~yTa>dl~QLf>lA8mbYc<(MNeeMMfjAJ&tWP#F@b(1=+y(d)9g560M|mD zJ=La`XA|&~Fen;3CoaIJOmQ9arNHM$uDvHK->v=fH=Dsc(}5$DU44m4(kXy>8&k=i z3B-`3cMF73&WVGD*EgJ^HX3PDGj$5Uvtt4^C+YbCCYPKzU(~L?R;7WrK%!M@qcVW< zDQ3m*HZ^Lu0PwC(p#xth9S~|aSuchMmo`|A`M6@kc>M7wSvu5V#yB>5!n(0l>ym>R zp+wls>S`B(QA z;5WA|2^}D5X=I3-s818bO1LoVC!Blt!gsX-Oq9#^2E;OKI{f{ED|$4zN9$`Bbu)S$ zwrPSB%HQh!CZ$trGC!&cM|F<+641?kGupHgmrf1OXvJs0G!9Kv$ME3q%eZ0a6?w2t zn_qlB{C$2e`uimoped^R!H0?cQm%2t8?)6XXp6P4euH>n3*Fe6iotr>D zN1`(V_gyzJ;BgES7X#M&d3*6o(@ImUEoC{y#-93en#1>9$@R%368kgK=HW?W&vKeG?S z8D_t>o!09`_65_zj5yZ>f{vK$D{hew+6HE(_q^y%e_OZ4gGiEH$s=8W_9q2`WD_o3zjRwQbkxN@HzC#D6|?C!R6&Nwaj@jacl z@EBacDwM|=m+$jw`8z%~wh1y+BoKASp6Lr}_NI;*YW7mwIS;VxurBMs5e=mJ0Bep2 zs?l`YD;{9MF-r3Ruj^oQ#dV?r3l4ZyCx$aF3)Lvk2fV2h!xguIYE{3*w5ig^z4SWTz_}#fG9x zl7CqNX)APO+9Mp`hOby`D|BYUKs9P_v#?6P}1CKa7GP2Glx1(oN+{`n=J6-5JYwd z#;N+R;XtqI+S{P0SOd}UnMl}pc}Oq~1$<^aP}bvT|Q%K!(3Jg&H3K0D4#52!}1ZLc`vgy31Xb^Hhi!hG$MQ4Jzd zX4VBc=ED9h<@Iw)!GD^IPn$mJ`^HRxXaVIZaPQ)ucWrdf^zi@T@)yf$9$*5D{C(;M z+TI-tDO|F~4Fb)P!|?GKIje`?qGYjlx2fE@ne)lmi(BI3tWQ>8NpZJv;5%!87Y7#L z|1*@`v_}g8R^zMXZ8uL+cN=xY%jL>9`)#Ha(>~*prSLh?I%u-AZN!NnZ$8cjQ;0smiZVA~cfs5%WBKMo~pM<@RXw8&km}PW#g)35> z#M04j_2??aDoSfo<*)DT-*G+Kf6=-po+Zf2ok|E$ywFtEKTQBWd16;PoQzl?f3A1= zF=%0Au{h^>O*iLRYd?qflsfC#53YWQ8M18oSo!62^tBVxfuE9z3L4^#_JbPE_Y1yC zdG{=Hi%65ppG~9+6Z}52*77JmX86h$^7KC3I`SU~CWM?KM2a^aCh(3_>td4ad#g%Y zz;7U3nUoNQ^L(*^5-c46CCaAPJ*3laPE;-bF_l@j`axo~0n_2Z)bgi2rd zf#Y#uXaP%*Q0W^#@C_gUmI$Fzt5+4}EC>)EU63AJn;Y{$-yo^lcU_PhTpJCpk)a8C zVV@2a>fj|4vz!F2T!k#3plEYfO1@AjKj6oX0P0|()%DSNz%|;iK(~PED6B;BMgg+a z36+w)s)+c2z!9VidW37k26XL0r5}Niw&)hje&C;kFrU43K@9M1F@R}EsMHWJIiOo` z`GG$X!F*m3AanFIu18J^1DP2oopOiA=s`JrTNl$n-xcX}t(T7Y!%K6+FA(Z0NdvF@pCmA!19d@%@NE#?xadcr(hDHn zS9FUP9fj}Ey)9drXwkmwMB*A{d81qO36yfvo(p-yK_n51lpZsCUfo0rBRD|=q{(3B zfZo_4v~k=Kw9GEK(27^ea^<}RuMcC8P5S~(2tc=>1-kndrlDuaiFD^F9%sAws=%+0xDW0EEFuKH zTIH!cOcQ-9;F13Oq|xN7gTAn6JM}G>>9?>O!~Cwxs;TuSB!oP}Ww*L4)@Ah^d|qYs z#rmH5j?W(tck7dHfahHTpN0x5+&t0CxbsZ_3uqMWJ;>PcK~Vpq*Px8syDD(z7=5LncPJ6V^Gt%JMnRJ+?#ZO9S;Eq!60mMHdkS5bl{PdrOAfNjf}|r8wVQYbz(! z_YF`Kiq*k9BzfNw2@3!8s)jPeXx{Ye*)3yoEJE!hODLs`-O_a-o-y9$`S$(IQxudW z^}T1qh|340V>LN59HZ+|%0 zbAE|PakAPJuIvJdR90I%cr8T(T*`uUtK!Z{fgCFGsnONi04w>z01M*g{<|FT1Oc8j z+s+4jS5ScGZc{kO1(c07La`bQ-z-@2jd(2y*XCiSx6>O+36f**C8RLhfL$C?V(<`R zA=nE?IFlNI!d*^AL11UlA<41dgH1CdEM6_qi_KNuDOo)oPOnf-5n_=SLGNhLA7v3w z{<+wopJ)b&LSMV*l;QX^*{$@9I>qO`9tiaew|KQyFNCKYks`syfFR1k zhde>K{F69GmVuJf)P>A;ZQjepR}GU)EnQKXxdu4g{$gMy_&;vQasa z_ho<2!zoqE^j6PYo)>MCDZvv$J9X6g-@s(sG+;}SpRZWMYDOee3_q%$&A4FlOMbNwpPAJQ@O>m_Z zto-zHPlagLV(mkuoS~TgOGgr({Sffhf`k? zZLYGqQ}Hk~hSPz%1pY-wuGjcOFsY>_(_vf<=f}{Jp<+E=A+qS!5j*t)9Ryam&_PGj z-CPgvwdAwaS+U;rkCmT#;ROUX{p>0=%Ifvri_se%1<9K4j^DQLAKqtu?y47bcm$qM za`0!c2n^buHK@^J2c6FY{^+sbQU>&-md{xZw13i8DAubKBEx*%_=$au<1%kPw-^o< z`(6$ZDbc20;D63pqDQ@e|D1EGJjzPod7xSubqMuGQx$bc`bSd}b%_2)QyX>2^hZ-4 zbtwGD-I;pf<8v$BOiyF>`?F zPZu@;Q^zv~`_~vzcfDXKJD>fb_}oBK(^GX2g5fhUS*3dOKg4pg9j0`jy-j6yiUF*{ z8L}wHozw4u$XYoLjKHjxIx1BNtyQr1EUsyYeP=-u-3ncx zUa)+2Vq_<%%pRQ4v-V*i7oLF?rmL8xR;h&KJJkH?46EGE;U8)-$zx5g07j=(n`(tg zmUjD^69A(OfYCKzd9n9`OrY;W$&FUEQ8d=m@o7^btiX#Kt;rA)yJpp@HUGpT zm4j=tEq4_j&z^r(kM>;2CWMY2@3pz}pEa3%{nL;w)};bBuIF0+qa4Y@9wjW?f2@HXM;!QsX!$MTEoGkH z`$#hy*w)tVOZ+?7NyU3-t&O@G>w-(hwhW4*Ff2L%KCSv59>o3mGHs-8iutp@2qOG+UG5=O4=egmftDDfM;b~9^^+8vRRU&TiA%*s&v{$R=jXO3Wo5b zUCx5w`Bmg3ZGUO{mUHteIm)}rMq0AqOC&Jr~V;f&)lrP5j)`gx@$&Y} z%=iIZ^8O6zupB$4W!6de#?4*VbpWgek?KrGz5+{iX`40}cqBC$G|qxqAc3uo-VH@n z%O%yC$jw7q$XW-5uzQo5T5Wugw?{zsQ!R7GQ%KTBt@8kmX#qX@MbE(smpv2FWXG;yFuZO+(2KK8|ULbDGc7PQ^Tm+ot2HMQ6Z!|KgczGGYbfJ-baLRk8wvph<420X&y*)hdB&{hmh~o z@?mCJ`soELHrmH9;!5N_5x^<#J_US>x^2-X&3a_S15}^k6uEaKa>6EVlD}Ot5VKd2 zmWK1gNL?qaB9~sj5N|{b{J^z3sMa`R6?rL6Y}-;s+86?EE(hF?=m2*qWW`+%bD;*t z@oY$EJ;7DkeGPRpOdw-fky-49;uSJ#J9GR70jgsCV0E2Qb$9|u{VMU&t4m1oVaYa3 z@yVYs^PH|_y;UQ2rg^>9_b`?)9|QU(kb(H#g*>875S}=Vp?Pd0l>MEDXoooAH4S{T zWQQu(u>w4Q{z?XF<6-L_zLxWH0nxP?iuOTkH{o@hUntkHEj)km${MOi@JsEC6?4LC zb@*mb$CO=d(p1WtN6wH{vy$sjQ*`$TP%v<@D`VfW-Zx*hhU;s!w++m1@s zJQPsEPdY8`f5?%}5D`{E335DSJKTxd)>sh;#1}W})fjs4FdMq~m+b_Q|9J!K$xmn0 z$$K}L!xtU_TWv;r6iu)VbBO;P`| z@ujFA4CmA+dAYh&TO&D7A;rt)$T}Cr9XP}|Oi9+sQi(bjB_6R|HCY^e%!xlVBzVm| zXs+ClKp*KGC-${1-O(TXxpm4z_o1$X4Q2a6RZTYeZvLDqF5wZzemq6T>K0=_#w)#U zM~>~oL+@s`z{xys^?}9aCP}qpVnT`uj`3xAi_@5?liN&6>NcA|)BX{)!>=^0%Wi1y zq1SgvUfo=JDGf(#;!XRk7fIQB$6sBPA5}a5O47RYb$lvp)M$x)_dU zu7&Qw5?svbi54VQc}H~JuIBhwhB))A7X6ZzFe6deD76!NHL&W`g}s1Zz*8Xlq$EhG zbzNIZ`R8Ipm%qJ&BpoCtH?^%zA-@HB3TC+l%SeteXJBd^5m$D@!8IsJt`Q|L6@|)x zz)zmQ&xL?EwVcn0z%Pj7RT>9V>4G18+M@0v9PlLVYv$Vq+}YzWiw?a}KiEo?Kv#nI zxi(8$lRvDbaLs=UoBY0gBBY5 zlnbr0t8|qvSLF(dTekb9F2&(n(cF`efk#Km%)`NwC7d59G95pStsuk zGC=nGbWgX%8eSPuFU`F~2&Q6vW7zPISCAP%MRx`JKR;lcTwy92pj9;~YTK_$(~d4~ zT;oOQZyg~wMBi8|oxPmr6>->r6`nk1X&LIye0cqZ?`Or2Ig-`OC1IVE;HgLSn&H>e zk3M7kL4!13ia7OO8ZQu4greZAmE9oPTZmn-FB1@OrW{)Ea1ef*^L!I3qnWbQT;@vq zjb8Ym%a6SDLA>l?@^=1W#*5(F0sFzeJxujeO6^0KwEUg^!GVC^zMLogj#b>p8o9l8 z@I{#7qj{S2^%C^A`fi~os=7x#@1$Ky;=F8;!@uLo2%)05dk`a%D+9lrJD-6&BSyryNWsDKfcl{w zHst~J=#O(H^fMCWCamxTC)kgd9+@QOR9lh0eD);m`@yyRoRfzri!u=`J9=_spkhuuDX;5?C?Vd<9a3JD z3;4Wod2kp%$|TG}-uQ>|B{twAy-n>8GU_PlG1nq=h_X>yyK^WjYq^IHozg&XA>pG98Z1-lJAmVnmGbS|4)$Vx|=QV6`|sxQ_{Dm0EL#>o3{48RH0B zoV&}il$MkT*OgqGg6m(Jv>)7}vfp=h!x(=^oY3rW;D@iD=-Mhh+>%^d5aRoe3V*>y zGEg{KG9R?9#xd%8EN4gPb$;t7J7~eWX>7z`6*bD$ckRsVS@BDf33uof$rc*w?(vOtC5m3fP{ys!mXnKGp}zwA^eycu%Q%KRrZPOgKdvYeOWmH4+RX;!`s6< zn0o8-7z8H5guGfZxVQwQnef>7V>dE`BFw>hA*79@5cXe0uJMQ)_QC9`m6w#%QNwjf z(zQxe$%q$xx+#;uwGm~kVtYnGn*+EP!?;*OxKsV)izg>2f!1suKFfOzCH=uL2PST_ zqvw?wJEr2}<008OL^2a0n69I9A!-~@`9f5Kj`=D`w&db*mY5t?zd5X!(5Ljjm+Dq) zPf!1}nD%kU;HbigXAvjty8F5?JWaSey)R^eYGYAN&*9JRc|i!g9$U5v7p;FAG~y_! zu7t>H{xEhnBOKnFc+2aq#OJc8X3*tPKCRkaZdO5o1G&t7- zgXTziqfFai2-W^(9XfJ=-Yux}QY3Uy(joC))eP0?^~$wOitf4RN3ZZvc+7`SVoT}U z+B)Y}Z-wu7oLSvM)0cX-n^DBA_(9_Pqd&}&0aPr{6W;#8}t0jy(lfe zxI!xA>MsJbL4=Bt=v*5u!sUl7*N9e*c7)g-c_qKghT%^YDtLp=xP)x@wS4bLflF(} z6t|Sr5&xDbQ%=O0jJhoLIP*7ud*qwD8S6_2pNCD^4>Q(}4g;RZIiL4yTyCN6=#!e` zA7Wgk>Kj~X>)q9my$=`1YtW-pZlcVP8ysAGuCv-dcZx*t)z`+7FVC-{tjFS6zw>8v zD9Z!>@>4AuF6IQ!c4cIBK*{!lXOh&eN4Kbl2YOE@RI|d-_Q% z8Ba*w7Y#fDh%*QeU3@(ix-HuSjr_b;MbWjmTn^CmK({I5OJw!-;T69@_Rgz>X;Vfe zjZOe_jTpa0-&KYYP6~{UBJTN-f@XRu!ySV&bfgxuZNmRiYJbBWJDTt2a>{b<+{QWo zS31f`FM~{3ADeNy(PB1#cX8VZ>?J*N?R@^P7CYkCrMN*$0lRsF%Z7tjcG(2^IGf;K0^>B+kxQ8Z}#_qo5@Q^f&O4a=6nXs!d0Kpzm zzN?$RsYoZULrv-#{6TCmyi|2nbAI(EN5G^{4WGy;C}--3{aXBoWXY2RilCMQ|0)0R z?4Ukm99I3HPN3dCne_yoDRfs-^laK;^Mshc#Up;*pBKtiZflD_v<@|g?BJIxYVyH? z!3|yURO8UvYe&9cQ#*Vx^v(}q@Pb47QM(iNKOTy+RwlD7h){0jmxtHhdX>irb0BSm z1%G0X?)^RKz(JtOTBo5gXk=524~K8gNv0BRGA3ff5%lJXbT(AFAsVdZ#rAWc73cHOi9wI7Zn{- zp>qSpV$VuLBDx`x>!B87SgC@^d;vo=WodzeV?$t98sk2AzPWmGb9~w7%?*SL^S>QVgb3&6&wk&SqVk9CYSmtw5r~`B!V$TH-sdD6%n76Dg0}h zIZB0SNGj3>%9@^zR}^b&228(R-|!~|_{7w{S@CLwrr;pux<&5zRw5sO_IXwK_jPvb z2VBo3IzGl-o_vrcGnV5*-wD&e(%S(NJvGmTcKlP__OnaVF{-ZgIab_-LXUlcTfJm7KW}QAJYda z@OCEkDEogXQVgVHzsqBCc2MTe2|+x2?B2!Di+N|Q+B2$NLGE$v~(rU^1Z z#3EAi+vY+ydKr_MxI&J;`Ofu6!Kc$wWlWJU9M|NdpUep07`7X91BF`!jya+iiJol! zP&p*QWUY9c=*DrzBrg*4kZrRWe#diHoY`o#L@#zYF_Gx|wca8U>hJ2$554E?%35A0 z3i8(1h>@Ty$j&^L70agR-B)HELytA0=%rJ!AH$5@?A+;Ph|_2mdVo4`lIy@RAYg9J zUXCmobirm!T*<@KR0>KO_Fi~Ehz&GRsknA3M5PIq;jNl0-`|W|uy=M{`L&;w-apMA zpD)+m8<+RQLuc>3&y-ZsKT}s9_DQxmCcmt1%UF<(QydpQ#8#yA(6G=Quiyu!v804? zcF+jxL*3$2G(_AoSk*6@yq zVhX!f=Ji>G#rp$y-=>$6Ddf{k1m-VH(t|NQL0cOlETY}FNZ8J;YF810p5$kEOt!k4wRR4n(|L-C{`evz)?wK{oy`X zN8sAwkFuc#vNR0^*bao&A{8)eE(G|FxSewY3KIo5_jqV)4ipXk`>P@q386^mIlpm! z_ItSETH%a%)XE9Yt-wJa`0>1~#J55mSvN~Akx@nVP^nd4FKC>6qrFuWb0cY8l~4j! zbvL;l!4U7vO%QWyVr$e9jeql+qF$c{E?u}pi;`L)T@sNJS`V6{kGb>3sJJ`PMc4Ui z=qhEfFpVvFb{T@P3Z6N%Av+mvfL_2xBY&T{pn($f;)}k1CauU|CDBD;k*b2n5_~G- zxO{fwIHUZBA>e$jM1@~@s7C4dM4OMb;el{Er0~=>@9~9sK3X4^DxL46Q9V-a)6?%X zWsS-ga1)AEnQ$7#n&MuF*pkqq3NjmY3cYVv^9Rqa5WW&37Sn;dW-8P5J1J<*>44gQ zNF*B7VsT3OTEp4$rsL~qMSf@p7&qqI&z|xdb&2l4*GwM+-;biaMER}9ohbdHqWt?C z=@-8hC8Kmxzp07M)rVD^zE*CIQ!V$OLfNNi)uNf5Sib*QDHGHZ)PZJmsn@54B%?{W z?C<(Ha0CIrQ#E#+22UvCeium+GxeijVJ5xa8;QQ4($o~muWFqUFEEjRzqj18o6W_N zzmZhv*V5uS7XR83@FBlVW#iom2Xwu-ZT} zwTdF6%J_wVf0Sf)#Fs2X&E(1L3!I z!^R&frw0|}U*#bbw}%jU^R)00(%pvZ>m|IeB#KODzK-qCOtZ&m6tg9;An4?<%r)56 zw4g$4fcl`7C5!OIXkcH8V~Qk_JKZIUzlC}=YDD_ zib1gfc2E1(aNjjLATVV2E8Svb24$}WI0DE5!>`K}kib7g7bLZyS|Vaw%huso*k)HL zXa-N;L~qs#_4S{<$@HlMtFO)|;E#xQ8dZrN_3ju|z2aJgYa*qd%)RWHU?6qN5GLk@ zMS>zp3$s=(kd&oBrulOJD3Zc)k1d+QhvG?)9{O(ON>V!X_c@L9yR(ruO5t(&?IXt2 zS5bGh{l7Ig_&ufcv5r)+J{WY~F=dPExnWU8#GC)jlaN-?#qLpdB604j?Oy1%4li7d z$-n+u$k`P~{BuVIH@DW88S7^r&A^NJ`@=OYV(0n0>k1zg4+#|yHIN6ozT3NORo&E8 z5!^os1v~v=;fR0D9~?#QooQ3KEx``NAWYpL1V|)ZNy6+jQohbQ`>EoNqEq@&V+daG z`+B3oTgt5*;ILR`s&I#*^Ia5bD52z%sjNcuP*;zY>WZmsl$Q=+Qp7dMv#Eby`+ahe zjX}xSzAzDDC%JPC=Ajrp>hqUB8#FWZo{+|Y?{*$>!_>(WcbVv+s_%)H@3Q1WNbDD< z0f>AE)mhA614etRP7#3^VXnmiIjm+uDWsEY|NWkR>GxYcu6lnB{9Q-eUvt0rwQELY zCIg;i{V6T6r9;{!PGajP;)#dfGw8>abCX3<3v1W+AzW5Yed(DXW^vZ8%mLgACjD1; zLCiy}U9Cg70~HjZ59^v{>(Q5IOqFQ%2Yi0Ott=MUDy=yxtyg9@ z8v{L$KHM%a-7froSTr^{>YBYnIfzN4zinC?S@fwQ@VkT-`Fsv|A9c>kh};Nu{Ug{9R(P}SrA{3q{5mFqo_2H%|Wf{{FA()q7QE zZuj)`neMsg)>O?s-Jdpkl_532I$h%Xa3kHrI%VU0F^u`WdH2{sml!z z)J!x;2@vhs9OtH+RK*%xntEc@ep-C0g*3jg_AKT%R_31xP_7tHd@XzJj$)O~H(9TW8v=eQ#~tq8)xM{0Gk8SPp9Q zy#A}Sbl@O61tnH`>M*`?dKSg+{C@nz^dYz*0p10+^f?BX_S&yLCp`iMLeIO@b>2MN6x^$E9

    % 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

    #Jc9;Y*1*q^r+Daq!l%xh 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 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/THIRD-PARTY-NOTICES.TXT b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/THIRD-PARTY-NOTICES.TXT deleted file mode 100644 index 06055ff03..000000000 --- a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/THIRD-PARTY-NOTICES.TXT +++ /dev/null @@ -1,226 +0,0 @@ -.NET Core uses third-party libraries or other resources that may be -distributed under licenses different than the .NET Core software. - -In the event that we accidentally failed to list a required notice, please -bring it to our attention. Post an issue or email us: - - dotnet@microsoft.com - -The attached notices are provided for information only. - -License notice for Slicing-by-8 -------------------------------- - -http://sourceforge.net/projects/slicing-by-8/ - -Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved - - -This software program is licensed subject to the BSD License, available at -http://www.opensource.org/licenses/bsd-license.html. - - -License notice for Unicode data -------------------------------- - -http://www.unicode.org/copyright.html#License - -Copyright © 1991-2017 Unicode, Inc. All rights reserved. -Distributed under the Terms of Use in http://www.unicode.org/copyright.html. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Unicode data files and any associated documentation -(the "Data Files") or Unicode software and any associated documentation -(the "Software") to deal in the Data Files or Software -without restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, and/or sell copies of -the Data Files or Software, and to permit persons to whom the Data Files -or Software are furnished to do so, provided that either -(a) this copyright and permission notice appear with all copies -of the Data Files or Software, or -(b) this copyright and permission notice appear in associated -Documentation. - -THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT OF THIRD PARTY RIGHTS. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS -NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL -DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, -DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THE DATA FILES OR SOFTWARE. - -Except as contained in this notice, the name of a copyright holder -shall not be used in advertising or otherwise to promote the sale, -use or other dealings in these Data Files or Software without prior -written authorization of the copyright holder. - -License notice for Zlib ------------------------ - -https://github.com/madler/zlib -http://zlib.net/zlib_license.html - -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.11, January 15th, 2017 - - Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - -*/ - -License notice for Mono -------------------------------- - -http://www.mono-project.com/docs/about-mono/ - -Copyright (c) .NET Foundation Contributors - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the Software), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -License notice for International Organization for Standardization ------------------------------------------------------------------ - -Portions (C) International Organization for Standardization 1986: - Permission to copy in any form is granted for use with - conforming SGML systems and applications as defined in - ISO 8879, provided this notice is included in all copies. - -License notice for Intel ------------------------- - -"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -License notice for Xamarin and Novell -------------------------------------- - -Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -Copyright (c) 2011 Novell, Inc (http://www.novell.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -Third party notice for W3C --------------------------- - -"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE -Status: This license takes effect 13 May, 2015. -This work is being provided by the copyright holders under the following license. -License -By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. -Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: -The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. -Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. -Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." -Disclaimers -THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. -COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. -The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders." - -License notice for Bit Twiddling Hacks --------------------------------------- - -Bit Twiddling Hacks - -By Sean Eron Anderson -seander@cs.stanford.edu - -Individually, the code snippets here are in the public domain (unless otherwise -noted) — feel free to use them however you please. The aggregate collection and -descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are -distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and -without even the implied warranty of merchantability or fitness for a particular -purpose. diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/MonoAndroid10/_._ b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/MonoAndroid10/_._ deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/MonoTouch10/_._ b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/MonoTouch10/_._ deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/net46/System.Numerics.Vectors.dll b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/net46/System.Numerics.Vectors.dll deleted file mode 100644 index ce46d5be85cdee1a3c0ef5bc22c8e1772d0d0d98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115936 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 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/net46/System.Numerics.Vectors.xml b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/net46/System.Numerics.Vectors.xml deleted file mode 100644 index 51297939a..000000000 --- a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/net46/System.Numerics.Vectors.xml +++ /dev/null @@ -1,2597 +0,0 @@ - - - - System.Numerics.Vectors - - - -

    Represents a 3x2 matrix. - - - Creates a 3x2 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a rotation matrix using the given rotation in radians. - The amount of rotation, in radians. - The rotation matrix. - - - Creates a rotation matrix using the specified rotation in radians and a center point. - The amount of rotation, in radians. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified X and Y components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the specified scale with an offset from the specified center. - The uniform scale to use. - The center offset. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The center point. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the given scale. - The uniform scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale with an offset from the specified center point. - The scale to use. - The center offset. - The scaling matrix. - - - Creates a skew matrix from the specified angles in radians. - The X angle, in radians. - The Y angle, in radians. - The skew matrix. - - - Creates a skew matrix from the specified angles in radians and a center point. - The X angle, in radians. - The Y angle, in radians. - The center point. - The skew matrix. - - - Creates a translation matrix from the specified 2-dimensional vector. - The translation position. - The translation matrix. - - - Creates a translation matrix from the specified X and Y components. - The X position. - The Y position. - The translation matrix. - - - Returns a value that indicates whether this instance and another 3x2 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Calculates the determinant for this matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - The multiplicative identify matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Represents a 4x4 matrix. - - - Creates a object from a specified object. - A 3x2 matrix. - - - Creates a 4x4 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the third element in the first row. - The value to assign to the fourth element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the third element in the second row. - The value to assign to the third element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - The value to assign to the third element in the third row. - The value to assign to the fourth element in the third row. - The value to assign to the first element in the fourth row. - The value to assign to the second element in the fourth row. - The value to assign to the third element in the fourth row. - The value to assign to the fourth element in the fourth row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a spherical billboard that rotates around a specified object position. - The position of the object that the billboard will rotate around. - The position of the camera. - The up vector of the camera. - The forward vector of the camera. - The created billboard. - - - Creates a cylindrical billboard that rotates around a specified axis. - The position of the object that the billboard will rotate around. - The position of the camera. - The axis to rotate the billboard around. - The forward vector of the camera. - The forward vector of the object. - The billboard matrix. - - - Creates a matrix that rotates around an arbitrary vector. - The axis to rotate around. - The angle to rotate around axis, in radians. - The rotation matrix. - - - Creates a rotation matrix from the specified Quaternion rotation value. - The source Quaternion. - The rotation matrix. - - - Creates a rotation matrix from the specified yaw, pitch, and roll. - The angle of rotation, in radians, around the Y axis. - The angle of rotation, in radians, around the X axis. - The angle of rotation, in radians, around the Z axis. - The rotation matrix. - - - Creates a view matrix. - The position of the camera. - The target towards which the camera is pointing. - The direction that is "up" from the camera's point of view. - The view matrix. - - - Creates an orthographic perspective matrix from the given view volume dimensions. - The width of the view volume. - The height of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a customized orthographic projection matrix. - The minimum X-value of the view volume. - The maximum X-value of the view volume. - The minimum Y-value of the view volume. - The maximum Y-value of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a perspective projection matrix from the given view volume dimensions. - The width of the view volume at the near view plane. - The height of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a perspective projection matrix based on a field of view, aspect ratio, and near and far view plane distances. - The field of view in the y direction, in radians. - The aspect ratio, defined as view space width divided by height. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - fieldOfView is less than or equal to zero. -or- fieldOfView is greater than or equal to . nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a customized perspective projection matrix. - The minimum x-value of the view volume at the near view plane. - The maximum x-value of the view volume at the near view plane. - The minimum y-value of the view volume at the near view plane. - The maximum y-value of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a matrix that reflects the coordinate system about a specified plane. - The plane about which to create a reflection. - A new matrix expressing the reflection. - - - Creates a matrix for rotating points around the X axis. - The amount, in radians, by which to rotate around the X axis. - The rotation matrix. - - - Creates a matrix for rotating points around the X axis from a center point. - The amount, in radians, by which to rotate around the X axis. - The center point. - The rotation matrix. - - - The amount, in radians, by which to rotate around the Y axis from a center point. - The amount, in radians, by which to rotate around the Y-axis. - The center point. - The rotation matrix. - - - Creates a matrix for rotating points around the Y axis. - The amount, in radians, by which to rotate around the Y-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis. - The amount, in radians, by which to rotate around the Z-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis from a center point. - The amount, in radians, by which to rotate around the Z-axis. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a uniform scaling matrix that scale equally on each axis. - The uniform scaling factor. - The scaling matrix. - - - Creates a scaling matrix with a center point. - The vector that contains the amount to scale on each axis. - The center point. - The scaling matrix. - - - Creates a uniform scaling matrix that scales equally on each axis with a center point. - The uniform scaling factor. - The center point. - The scaling matrix. - - - Creates a scaling matrix from the specified X, Y, and Z components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The center point. - The scaling matrix. - - - Creates a matrix that flattens geometry into a specified plane as if casting a shadow from a specified light source. - The direction from which the light that will cast the shadow is coming. - The plane onto which the new matrix should flatten geometry so as to cast a shadow. - A new matrix that can be used to flatten geometry onto the specified plane from the specified direction. - - - Creates a translation matrix from the specified 3-dimensional vector. - The amount to translate in each axis. - The translation matrix. - - - Creates a translation matrix from the specified X, Y, and Z components. - The amount to translate on the X axis. - The amount to translate on the Y axis. - The amount to translate on the Z axis. - The translation matrix. - - - Creates a world matrix with the specified parameters. - The position of the object. - The forward direction of the object. - The upward direction of the object. Its value is usually [0, 1, 0]. - The world matrix. - - - Attempts to extract the scale, translation, and rotation components from the given scale, rotation, or translation matrix. The return value indicates whether the operation succeeded. - The source matrix. - When this method returns, contains the scaling component of the transformation matrix if the operation succeeded. - When this method returns, contains the rotation component of the transformation matrix if the operation succeeded. - When the method returns, contains the translation component of the transformation matrix if the operation succeeded. - true if matrix was decomposed successfully; otherwise, false. - - - Returns a value that indicates whether this instance and another 4x4 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Calculates the determinant of the current 4x4 matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - Gets the multiplicative identity matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The third element of the first row. - - - - The fourth element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The third element of the second row. - - - - The fourth element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - The third element of the third row. - - - - The fourth element of the third row. - - - - The first element of the fourth row. - - - - The second element of the fourth row. - - - - The third element of the fourth row. - - - - The fourth element of the fourth row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to care - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Transforms the specified matrix by applying the specified Quaternion rotation. - The matrix to transform. - The rotation t apply. - The transformed matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Transposes the rows and columns of a matrix. - The matrix to transpose. - The transposed matrix. - - - Represents a three-dimensional plane. - - - Creates a object from a specified four-dimensional vector. - A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin. - - - Creates a object from a specified normal and the distance along the normal from the origin. - The plane's normal vector. - The plane's distance from the origin along its normal vector. - - - Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal. - The X component of the normal. - The Y component of the normal. - The Z component of the normal. - The distance of the plane along its normal from the origin. - - - Creates a object that contains three specified points. - The first point defining the plane. - The second point defining the plane. - The third point defining the plane. - The plane containing the three points. - - - The distance of the plane along its normal from the origin. - - - - Calculates the dot product of a plane and a 4-dimensional vector. - The plane. - The four-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the normal vector of this plane plus the distance () value of the plane. - The plane. - The 3-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the vector of this plane. - The plane. - The three-dimensional vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns a value that indicates whether this instance and another plane object are equal. - The other plane. - true if the two planes are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - The normal vector of the plane. - - - - Creates a new object whose normal vector is the source plane's normal vector normalized. - The source plane. - The normalized plane. - - - Returns a value that indicates whether two planes are equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether two planes are not equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the string representation of this plane object. - A string that represents this object. - - - Transforms a normalized plane by a 4x4 matrix. - The normalized plane to transform. - The transformation matrix to apply to plane. - The transformed plane. - - - Transforms a normalized plane by a Quaternion rotation. - The normalized plane to transform. - The Quaternion rotation to apply to the plane. - A new plane that results from applying the Quaternion rotation. - - - Represents a vector that is used to encode three-dimensional physical rotations. - - - Creates a quaternion from the specified vector and rotation parts. - The vector part of the quaternion. - The rotation part of the quaternion. - - - Constructs a quaternion from the specified components. - The value to assign to the X component of the quaternion. - The value to assign to the Y component of the quaternion. - The value to assign to the Z component of the quaternion. - The value to assign to the W component of the quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Concatenates two quaternions. - The first quaternion rotation in the series. - The second quaternion rotation in the series. - A new quaternion representing the concatenation of the value1 rotation followed by the value2 rotation. - - - Returns the conjugate of a specified quaternion. - The quaternion. - A new quaternion that is the conjugate of value. - - - Creates a quaternion from a vector and an angle to rotate about the vector. - The vector to rotate around. - The angle, in radians, to rotate around the vector. - The newly created quaternion. - - - Creates a quaternion from the specified rotation matrix. - The rotation matrix. - The newly created quaternion. - - - Creates a new quaternion from the given yaw, pitch, and roll. - The yaw angle, in radians, around the Y axis. - The pitch angle, in radians, around the X axis. - The roll angle, in radians, around the Z axis. - The resulting quaternion. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Calculates the dot product of two quaternions. - The first quaternion. - The second quaternion. - The dot product. - - - Returns a value that indicates whether this instance and another quaternion are equal. - The other quaternion. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Gets a quaternion that represents no rotation. - A quaternion whose values are (0, 0, 0, 1). - - - Returns the inverse of a quaternion. - The quaternion. - The inverted quaternion. - - - Gets a value that indicates whether the current instance is the identity quaternion. - true if the current instance is the identity quaternion; otherwise, false. - - - Calculates the length of the quaternion. - The computed length of the quaternion. - - - Calculates the squared length of the quaternion. - The length squared of the quaternion. - - - Performs a linear interpolation between two quaternions based on a value that specifies the weighting of the second quaternion. - The first quaternion. - The second quaternion. - The relative weight of quaternion2 in the interpolation. - The interpolated quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Divides each component of a specified by its length. - The quaternion to normalize. - The normalized quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Returns a value that indicates whether two quaternions are equal. - The first quaternion to compare. - The second quaternion to compare. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether two quaternions are not equal. - The first quaternion to compare. - The second quaternion to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Interpolates between two quaternions, using spherical linear interpolation. - The first quaternion. - The second quaternion. - The relative weight of the second quaternion in the interpolation. - The interpolated quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this quaternion. - The string representation of this quaternion. - - - The rotation component of the quaternion. - - - - The X value of the vector component of the quaternion. - - - - The Y value of the vector component of the quaternion. - - - - The Z value of the vector component of the quaternion. - - - - Represents a single vector of a specified numeric type that is suitable for low-level optimization of parallel algorithms. - The vector type. T can be any primitive numeric type. - - - Creates a vector whose components are of a specified type. - The numeric type that defines the type of the components in the vector. - - - Creates a vector from a specified array. - A numeric array. - values is null. - - - Creates a vector from a specified array starting at a specified index position. - A numeric array. - The starting index position from which to create the vector. - values is null. - index is less than zero. -or- The length of values minus index is less than . - - - Copies the vector instance to a specified destination array. - The array to receive a copy of the vector values. - destination is null. - The number of elements in the current vector is greater than the number of elements available in the destination array. - - - Copies the vector instance to a specified destination array starting at a specified index position. - The array to receive a copy of the vector values. - The starting index in destination at which to begin the copy operation. - destination is null. - The number of elements in the current instance is greater than the number of elements available from startIndex to the end of the destination array. - index is less than zero or greater than the last index in destination. - - - Returns the number of elements stored in the vector. - The number of elements stored in the vector. - Access to the property getter via reflection is not supported. - - - Returns a value that indicates whether this instance is equal to a specified vector. - The vector to compare with this instance. - true if the current instance and other are equal; otherwise, false. - - - Returns a value that indicates whether this instance is equal to a specified object. - The object to compare with this instance. - true if the current instance and obj are equal; otherwise, false. The method returns false if obj is null, or if obj is a vector of a different type than the current instance. - - - Returns the hash code for this instance. - The hash code. - - - Gets the element at a specified index. - The index of the element to return. - The element at index index. - index is less than zero. -or- index is greater than or equal to . - - - Returns a vector containing all ones. - A vector containing all ones. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Returns a new vector by performing a bitwise And operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise And of left and right. - - - Returns a new vector by performing a bitwise Or operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise Or of the elements in left and right. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Returns a value that indicates whether each pair of elements in two specified vectors are equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a new vector by performing a bitwise XOr operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise XOr of the elements in left and right. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Returns a value that indicates whether any single pair of elements in the specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if any element pairs in left and right are equal. false if no element pairs are equal. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar value. - The source vector. - A scalar value. - The scaled vector. - - - Multiplies a vector by the given scalar. - The scalar value. - The source vector. - The scaled vector. - - - Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements. - The source vector. - The one's complement vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates a given vector. - The vector to negate. - The negated vector. - - - Returns the string representation of this vector using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Returns the string representation of this vector using default formatting. - The string representation of this vector. - - - Returns the string representation of this vector using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns a vector containing all zeroes. - A vector containing all zeroes. - - - Provides a collection of static convenience methods for creating, manipulating, combining, and converting generic vectors. - - - Returns a new vector whose elements are the absolute values of the given vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The absolute value vector. - - - Returns a new vector whose values are the sum of each pair of elements from two given vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The summed vector. - - - Returns a new vector by performing a bitwise And Not operation on each pair of corresponding elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a double-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of signed bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a single-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Returns a new vector by performing a bitwise And operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector by performing a bitwise Or operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Creates a new single-precision vector with elements selected between two specified single-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new double-precision vector with elements selected between two specified double-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new vector of a specified type with elements selected between two specified source vectors of the same type based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The vector type. T can be any primitive numeric type. - The new vector with elements selected based on the mask. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose values are the result of dividing the first vector's elements by the corresponding elements in the second vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The divided vector. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The dot product. - - - Returns a new integral vector whose elements signal whether the elements in two specified double-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified integral vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in two specified long integer vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified single-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in two specified vectors of the same type are equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether each pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left and right are equal; otherwise, false. - - - Returns a value that indicates whether any single pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element pair in left and right is equal; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are greater than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are greater than their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than their corresponding elements in the second vector of the same time. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the single-precision floating-point second vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than or equal to their corresponding elements in the second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than or equal to their corresponding elements in the second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than or equal to their corresponding elements in the second vector of the same type. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than or equal to all the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than or equal to the corresponding element in right; otherwise, false. - - - Gets a value that indicates whether vector operations are subject to hardware acceleration through JIT intrinsic support. - true if vector operations are subject to hardware acceleration; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision vector are less than their corresponding elements in a second single-precision vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in one vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all of the elements in the first vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than or equal to their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than or equal to their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less or equal to their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are less than or equal to their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than or equal to the corresponding element in right; otherwise, false. - - - Returns a new vector whose elements are the maximum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The maximum vector. - - - Returns a new vector whose elements are the minimum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The minimum vector. - - - Returns a new vector whose values are a scalar value multiplied by each of the values of a specified vector. - The scalar value. - The vector. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - Returns a new vector whose values are the product of each pair of elements in two specified vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The product vector. - - - Returns a new vector whose values are the values of a specified vector each multiplied by a scalar value. - The vector. - The scalar value. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose elements are the negation of the corresponding element in the specified vector. - The source vector. - The vector type. T can be any primitive numeric type. - The negated vector. - - - Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector whose elements are the square roots of a specified vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The square root vector. - - - Returns a new vector whose values are the difference between the elements in the second vector and their corresponding elements in the first vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The difference vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector by performing a bitwise exclusive Or (XOr) operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Represents a vector with two single-precision floating-point values. - - - Creates a new object whose two elements have the same value. - The value to assign to both elements. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of the vector. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 2 elements are equal to one. - A vector whose two elements are equal to one (that is, it returns the vector (1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 3x2 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 3x2 matrix. - The source vector. - The matrix. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0). - The vector (1,0). - - - Gets the vector (0,1). - The vector (0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - Returns a vector whose 2 elements are equal to zero. - A vector whose two elements are equal to zero (that is, it returns the vector (0,0). - - - Represents a vector with three single-precision floating-point values. - - - Creates a new object whose three elements have the same value. - The value to assign to all three elements. - - - Creates a new object from the specified object and the specified value. - The vector with two elements. - The additional value to assign to the field. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the cross product of two vectors. - The first vector. - The second vector. - The cross product. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 3 elements are equal to one. - A vector whose three elements are equal to one (that is, it returns the vector (1,1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0,0). - The vector (1,0,0). - - - Gets the vector (0,1,0). - The vector (0,1,0).. - - - Gets the vector (0,0,1). - The vector (0,0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 3 elements are equal to zero. - A vector whose three elements are equal to zero (that is, it returns the vector (0,0,0). - - - Represents a vector with four single-precision floating-point values. - - - Creates a new object whose four elements have the same value. - The value to assign to all four elements. - - - Constructs a new object from the specified object and a W component. - The vector to use for the X, Y, and Z components. - The W component. - - - Creates a new object from the specified object and a Z and a W component. - The vector to use for the X and Y components. - The Z component. - The W component. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 4 elements are equal to one. - Returns . - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a four-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a four-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a three-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a two-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a two-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a three-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Gets the vector (0,0,0,1). - The vector (0,0,0,1). - - - Gets the vector (1,0,0,0). - The vector (1,0,0,0). - - - Gets the vector (0,1,0,0). - The vector (0,1,0,0).. - - - Gets a vector whose 4 elements are equal to zero. - The vector (0,0,1,0). - - - The W component of the vector. - - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 4 elements are equal to zero. - A vector whose four elements are equal to zero (that is, it returns the vector (0,0,0,0). - - - \ No newline at end of file diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netcoreapp2.0/_._ b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netcoreapp2.0/_._ deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netstandard1.0/System.Numerics.Vectors.dll b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netstandard1.0/System.Numerics.Vectors.dll deleted file mode 100644 index 46308fdb3acf521d69320d5d9f7436fafb898d63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161152 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 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netstandard1.0/System.Numerics.Vectors.xml b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netstandard1.0/System.Numerics.Vectors.xml deleted file mode 100644 index 51297939a..000000000 --- a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netstandard1.0/System.Numerics.Vectors.xml +++ /dev/null @@ -1,2597 +0,0 @@ - - - - System.Numerics.Vectors - - - - Represents a 3x2 matrix. - - - Creates a 3x2 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a rotation matrix using the given rotation in radians. - The amount of rotation, in radians. - The rotation matrix. - - - Creates a rotation matrix using the specified rotation in radians and a center point. - The amount of rotation, in radians. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified X and Y components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the specified scale with an offset from the specified center. - The uniform scale to use. - The center offset. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The center point. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the given scale. - The uniform scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale with an offset from the specified center point. - The scale to use. - The center offset. - The scaling matrix. - - - Creates a skew matrix from the specified angles in radians. - The X angle, in radians. - The Y angle, in radians. - The skew matrix. - - - Creates a skew matrix from the specified angles in radians and a center point. - The X angle, in radians. - The Y angle, in radians. - The center point. - The skew matrix. - - - Creates a translation matrix from the specified 2-dimensional vector. - The translation position. - The translation matrix. - - - Creates a translation matrix from the specified X and Y components. - The X position. - The Y position. - The translation matrix. - - - Returns a value that indicates whether this instance and another 3x2 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Calculates the determinant for this matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - The multiplicative identify matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Represents a 4x4 matrix. - - - Creates a object from a specified object. - A 3x2 matrix. - - - Creates a 4x4 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the third element in the first row. - The value to assign to the fourth element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the third element in the second row. - The value to assign to the third element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - The value to assign to the third element in the third row. - The value to assign to the fourth element in the third row. - The value to assign to the first element in the fourth row. - The value to assign to the second element in the fourth row. - The value to assign to the third element in the fourth row. - The value to assign to the fourth element in the fourth row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a spherical billboard that rotates around a specified object position. - The position of the object that the billboard will rotate around. - The position of the camera. - The up vector of the camera. - The forward vector of the camera. - The created billboard. - - - Creates a cylindrical billboard that rotates around a specified axis. - The position of the object that the billboard will rotate around. - The position of the camera. - The axis to rotate the billboard around. - The forward vector of the camera. - The forward vector of the object. - The billboard matrix. - - - Creates a matrix that rotates around an arbitrary vector. - The axis to rotate around. - The angle to rotate around axis, in radians. - The rotation matrix. - - - Creates a rotation matrix from the specified Quaternion rotation value. - The source Quaternion. - The rotation matrix. - - - Creates a rotation matrix from the specified yaw, pitch, and roll. - The angle of rotation, in radians, around the Y axis. - The angle of rotation, in radians, around the X axis. - The angle of rotation, in radians, around the Z axis. - The rotation matrix. - - - Creates a view matrix. - The position of the camera. - The target towards which the camera is pointing. - The direction that is "up" from the camera's point of view. - The view matrix. - - - Creates an orthographic perspective matrix from the given view volume dimensions. - The width of the view volume. - The height of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a customized orthographic projection matrix. - The minimum X-value of the view volume. - The maximum X-value of the view volume. - The minimum Y-value of the view volume. - The maximum Y-value of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a perspective projection matrix from the given view volume dimensions. - The width of the view volume at the near view plane. - The height of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a perspective projection matrix based on a field of view, aspect ratio, and near and far view plane distances. - The field of view in the y direction, in radians. - The aspect ratio, defined as view space width divided by height. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - fieldOfView is less than or equal to zero. -or- fieldOfView is greater than or equal to . nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a customized perspective projection matrix. - The minimum x-value of the view volume at the near view plane. - The maximum x-value of the view volume at the near view plane. - The minimum y-value of the view volume at the near view plane. - The maximum y-value of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a matrix that reflects the coordinate system about a specified plane. - The plane about which to create a reflection. - A new matrix expressing the reflection. - - - Creates a matrix for rotating points around the X axis. - The amount, in radians, by which to rotate around the X axis. - The rotation matrix. - - - Creates a matrix for rotating points around the X axis from a center point. - The amount, in radians, by which to rotate around the X axis. - The center point. - The rotation matrix. - - - The amount, in radians, by which to rotate around the Y axis from a center point. - The amount, in radians, by which to rotate around the Y-axis. - The center point. - The rotation matrix. - - - Creates a matrix for rotating points around the Y axis. - The amount, in radians, by which to rotate around the Y-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis. - The amount, in radians, by which to rotate around the Z-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis from a center point. - The amount, in radians, by which to rotate around the Z-axis. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a uniform scaling matrix that scale equally on each axis. - The uniform scaling factor. - The scaling matrix. - - - Creates a scaling matrix with a center point. - The vector that contains the amount to scale on each axis. - The center point. - The scaling matrix. - - - Creates a uniform scaling matrix that scales equally on each axis with a center point. - The uniform scaling factor. - The center point. - The scaling matrix. - - - Creates a scaling matrix from the specified X, Y, and Z components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The center point. - The scaling matrix. - - - Creates a matrix that flattens geometry into a specified plane as if casting a shadow from a specified light source. - The direction from which the light that will cast the shadow is coming. - The plane onto which the new matrix should flatten geometry so as to cast a shadow. - A new matrix that can be used to flatten geometry onto the specified plane from the specified direction. - - - Creates a translation matrix from the specified 3-dimensional vector. - The amount to translate in each axis. - The translation matrix. - - - Creates a translation matrix from the specified X, Y, and Z components. - The amount to translate on the X axis. - The amount to translate on the Y axis. - The amount to translate on the Z axis. - The translation matrix. - - - Creates a world matrix with the specified parameters. - The position of the object. - The forward direction of the object. - The upward direction of the object. Its value is usually [0, 1, 0]. - The world matrix. - - - Attempts to extract the scale, translation, and rotation components from the given scale, rotation, or translation matrix. The return value indicates whether the operation succeeded. - The source matrix. - When this method returns, contains the scaling component of the transformation matrix if the operation succeeded. - When this method returns, contains the rotation component of the transformation matrix if the operation succeeded. - When the method returns, contains the translation component of the transformation matrix if the operation succeeded. - true if matrix was decomposed successfully; otherwise, false. - - - Returns a value that indicates whether this instance and another 4x4 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Calculates the determinant of the current 4x4 matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - Gets the multiplicative identity matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The third element of the first row. - - - - The fourth element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The third element of the second row. - - - - The fourth element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - The third element of the third row. - - - - The fourth element of the third row. - - - - The first element of the fourth row. - - - - The second element of the fourth row. - - - - The third element of the fourth row. - - - - The fourth element of the fourth row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to care - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Transforms the specified matrix by applying the specified Quaternion rotation. - The matrix to transform. - The rotation t apply. - The transformed matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Transposes the rows and columns of a matrix. - The matrix to transpose. - The transposed matrix. - - - Represents a three-dimensional plane. - - - Creates a object from a specified four-dimensional vector. - A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin. - - - Creates a object from a specified normal and the distance along the normal from the origin. - The plane's normal vector. - The plane's distance from the origin along its normal vector. - - - Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal. - The X component of the normal. - The Y component of the normal. - The Z component of the normal. - The distance of the plane along its normal from the origin. - - - Creates a object that contains three specified points. - The first point defining the plane. - The second point defining the plane. - The third point defining the plane. - The plane containing the three points. - - - The distance of the plane along its normal from the origin. - - - - Calculates the dot product of a plane and a 4-dimensional vector. - The plane. - The four-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the normal vector of this plane plus the distance () value of the plane. - The plane. - The 3-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the vector of this plane. - The plane. - The three-dimensional vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns a value that indicates whether this instance and another plane object are equal. - The other plane. - true if the two planes are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - The normal vector of the plane. - - - - Creates a new object whose normal vector is the source plane's normal vector normalized. - The source plane. - The normalized plane. - - - Returns a value that indicates whether two planes are equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether two planes are not equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the string representation of this plane object. - A string that represents this object. - - - Transforms a normalized plane by a 4x4 matrix. - The normalized plane to transform. - The transformation matrix to apply to plane. - The transformed plane. - - - Transforms a normalized plane by a Quaternion rotation. - The normalized plane to transform. - The Quaternion rotation to apply to the plane. - A new plane that results from applying the Quaternion rotation. - - - Represents a vector that is used to encode three-dimensional physical rotations. - - - Creates a quaternion from the specified vector and rotation parts. - The vector part of the quaternion. - The rotation part of the quaternion. - - - Constructs a quaternion from the specified components. - The value to assign to the X component of the quaternion. - The value to assign to the Y component of the quaternion. - The value to assign to the Z component of the quaternion. - The value to assign to the W component of the quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Concatenates two quaternions. - The first quaternion rotation in the series. - The second quaternion rotation in the series. - A new quaternion representing the concatenation of the value1 rotation followed by the value2 rotation. - - - Returns the conjugate of a specified quaternion. - The quaternion. - A new quaternion that is the conjugate of value. - - - Creates a quaternion from a vector and an angle to rotate about the vector. - The vector to rotate around. - The angle, in radians, to rotate around the vector. - The newly created quaternion. - - - Creates a quaternion from the specified rotation matrix. - The rotation matrix. - The newly created quaternion. - - - Creates a new quaternion from the given yaw, pitch, and roll. - The yaw angle, in radians, around the Y axis. - The pitch angle, in radians, around the X axis. - The roll angle, in radians, around the Z axis. - The resulting quaternion. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Calculates the dot product of two quaternions. - The first quaternion. - The second quaternion. - The dot product. - - - Returns a value that indicates whether this instance and another quaternion are equal. - The other quaternion. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Gets a quaternion that represents no rotation. - A quaternion whose values are (0, 0, 0, 1). - - - Returns the inverse of a quaternion. - The quaternion. - The inverted quaternion. - - - Gets a value that indicates whether the current instance is the identity quaternion. - true if the current instance is the identity quaternion; otherwise, false. - - - Calculates the length of the quaternion. - The computed length of the quaternion. - - - Calculates the squared length of the quaternion. - The length squared of the quaternion. - - - Performs a linear interpolation between two quaternions based on a value that specifies the weighting of the second quaternion. - The first quaternion. - The second quaternion. - The relative weight of quaternion2 in the interpolation. - The interpolated quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Divides each component of a specified by its length. - The quaternion to normalize. - The normalized quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Returns a value that indicates whether two quaternions are equal. - The first quaternion to compare. - The second quaternion to compare. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether two quaternions are not equal. - The first quaternion to compare. - The second quaternion to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Interpolates between two quaternions, using spherical linear interpolation. - The first quaternion. - The second quaternion. - The relative weight of the second quaternion in the interpolation. - The interpolated quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this quaternion. - The string representation of this quaternion. - - - The rotation component of the quaternion. - - - - The X value of the vector component of the quaternion. - - - - The Y value of the vector component of the quaternion. - - - - The Z value of the vector component of the quaternion. - - - - Represents a single vector of a specified numeric type that is suitable for low-level optimization of parallel algorithms. - The vector type. T can be any primitive numeric type. - - - Creates a vector whose components are of a specified type. - The numeric type that defines the type of the components in the vector. - - - Creates a vector from a specified array. - A numeric array. - values is null. - - - Creates a vector from a specified array starting at a specified index position. - A numeric array. - The starting index position from which to create the vector. - values is null. - index is less than zero. -or- The length of values minus index is less than . - - - Copies the vector instance to a specified destination array. - The array to receive a copy of the vector values. - destination is null. - The number of elements in the current vector is greater than the number of elements available in the destination array. - - - Copies the vector instance to a specified destination array starting at a specified index position. - The array to receive a copy of the vector values. - The starting index in destination at which to begin the copy operation. - destination is null. - The number of elements in the current instance is greater than the number of elements available from startIndex to the end of the destination array. - index is less than zero or greater than the last index in destination. - - - Returns the number of elements stored in the vector. - The number of elements stored in the vector. - Access to the property getter via reflection is not supported. - - - Returns a value that indicates whether this instance is equal to a specified vector. - The vector to compare with this instance. - true if the current instance and other are equal; otherwise, false. - - - Returns a value that indicates whether this instance is equal to a specified object. - The object to compare with this instance. - true if the current instance and obj are equal; otherwise, false. The method returns false if obj is null, or if obj is a vector of a different type than the current instance. - - - Returns the hash code for this instance. - The hash code. - - - Gets the element at a specified index. - The index of the element to return. - The element at index index. - index is less than zero. -or- index is greater than or equal to . - - - Returns a vector containing all ones. - A vector containing all ones. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Returns a new vector by performing a bitwise And operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise And of left and right. - - - Returns a new vector by performing a bitwise Or operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise Or of the elements in left and right. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Returns a value that indicates whether each pair of elements in two specified vectors are equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a new vector by performing a bitwise XOr operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise XOr of the elements in left and right. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Returns a value that indicates whether any single pair of elements in the specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if any element pairs in left and right are equal. false if no element pairs are equal. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar value. - The source vector. - A scalar value. - The scaled vector. - - - Multiplies a vector by the given scalar. - The scalar value. - The source vector. - The scaled vector. - - - Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements. - The source vector. - The one's complement vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates a given vector. - The vector to negate. - The negated vector. - - - Returns the string representation of this vector using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Returns the string representation of this vector using default formatting. - The string representation of this vector. - - - Returns the string representation of this vector using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns a vector containing all zeroes. - A vector containing all zeroes. - - - Provides a collection of static convenience methods for creating, manipulating, combining, and converting generic vectors. - - - Returns a new vector whose elements are the absolute values of the given vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The absolute value vector. - - - Returns a new vector whose values are the sum of each pair of elements from two given vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The summed vector. - - - Returns a new vector by performing a bitwise And Not operation on each pair of corresponding elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a double-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of signed bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a single-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Returns a new vector by performing a bitwise And operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector by performing a bitwise Or operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Creates a new single-precision vector with elements selected between two specified single-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new double-precision vector with elements selected between two specified double-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new vector of a specified type with elements selected between two specified source vectors of the same type based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The vector type. T can be any primitive numeric type. - The new vector with elements selected based on the mask. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose values are the result of dividing the first vector's elements by the corresponding elements in the second vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The divided vector. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The dot product. - - - Returns a new integral vector whose elements signal whether the elements in two specified double-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified integral vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in two specified long integer vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified single-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in two specified vectors of the same type are equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether each pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left and right are equal; otherwise, false. - - - Returns a value that indicates whether any single pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element pair in left and right is equal; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are greater than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are greater than their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than their corresponding elements in the second vector of the same time. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the single-precision floating-point second vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than or equal to their corresponding elements in the second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than or equal to their corresponding elements in the second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than or equal to their corresponding elements in the second vector of the same type. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than or equal to all the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than or equal to the corresponding element in right; otherwise, false. - - - Gets a value that indicates whether vector operations are subject to hardware acceleration through JIT intrinsic support. - true if vector operations are subject to hardware acceleration; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision vector are less than their corresponding elements in a second single-precision vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in one vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all of the elements in the first vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than or equal to their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than or equal to their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less or equal to their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are less than or equal to their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than or equal to the corresponding element in right; otherwise, false. - - - Returns a new vector whose elements are the maximum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The maximum vector. - - - Returns a new vector whose elements are the minimum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The minimum vector. - - - Returns a new vector whose values are a scalar value multiplied by each of the values of a specified vector. - The scalar value. - The vector. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - Returns a new vector whose values are the product of each pair of elements in two specified vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The product vector. - - - Returns a new vector whose values are the values of a specified vector each multiplied by a scalar value. - The vector. - The scalar value. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose elements are the negation of the corresponding element in the specified vector. - The source vector. - The vector type. T can be any primitive numeric type. - The negated vector. - - - Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector whose elements are the square roots of a specified vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The square root vector. - - - Returns a new vector whose values are the difference between the elements in the second vector and their corresponding elements in the first vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The difference vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector by performing a bitwise exclusive Or (XOr) operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Represents a vector with two single-precision floating-point values. - - - Creates a new object whose two elements have the same value. - The value to assign to both elements. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of the vector. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 2 elements are equal to one. - A vector whose two elements are equal to one (that is, it returns the vector (1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 3x2 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 3x2 matrix. - The source vector. - The matrix. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0). - The vector (1,0). - - - Gets the vector (0,1). - The vector (0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - Returns a vector whose 2 elements are equal to zero. - A vector whose two elements are equal to zero (that is, it returns the vector (0,0). - - - Represents a vector with three single-precision floating-point values. - - - Creates a new object whose three elements have the same value. - The value to assign to all three elements. - - - Creates a new object from the specified object and the specified value. - The vector with two elements. - The additional value to assign to the field. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the cross product of two vectors. - The first vector. - The second vector. - The cross product. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 3 elements are equal to one. - A vector whose three elements are equal to one (that is, it returns the vector (1,1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0,0). - The vector (1,0,0). - - - Gets the vector (0,1,0). - The vector (0,1,0).. - - - Gets the vector (0,0,1). - The vector (0,0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 3 elements are equal to zero. - A vector whose three elements are equal to zero (that is, it returns the vector (0,0,0). - - - Represents a vector with four single-precision floating-point values. - - - Creates a new object whose four elements have the same value. - The value to assign to all four elements. - - - Constructs a new object from the specified object and a W component. - The vector to use for the X, Y, and Z components. - The W component. - - - Creates a new object from the specified object and a Z and a W component. - The vector to use for the X and Y components. - The Z component. - The W component. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 4 elements are equal to one. - Returns . - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a four-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a four-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a three-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a two-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a two-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a three-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Gets the vector (0,0,0,1). - The vector (0,0,0,1). - - - Gets the vector (1,0,0,0). - The vector (1,0,0,0). - - - Gets the vector (0,1,0,0). - The vector (0,1,0,0).. - - - Gets a vector whose 4 elements are equal to zero. - The vector (0,0,1,0). - - - The W component of the vector. - - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 4 elements are equal to zero. - A vector whose four elements are equal to zero (that is, it returns the vector (0,0,0,0). - - - \ No newline at end of file diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netstandard2.0/System.Numerics.Vectors.dll b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netstandard2.0/System.Numerics.Vectors.dll deleted file mode 100644 index a808165accf4b28833d22169931d4c879defd96d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163712 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�q8Bzlv}ROx-}ptnKD&8tasR$2=E({1 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 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netstandard2.0/System.Numerics.Vectors.xml b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netstandard2.0/System.Numerics.Vectors.xml deleted file mode 100644 index 51297939a..000000000 --- a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/netstandard2.0/System.Numerics.Vectors.xml +++ /dev/null @@ -1,2597 +0,0 @@ - - - - System.Numerics.Vectors - - - - Represents a 3x2 matrix. - - - Creates a 3x2 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a rotation matrix using the given rotation in radians. - The amount of rotation, in radians. - The rotation matrix. - - - Creates a rotation matrix using the specified rotation in radians and a center point. - The amount of rotation, in radians. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified X and Y components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the specified scale with an offset from the specified center. - The uniform scale to use. - The center offset. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The center point. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the given scale. - The uniform scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale with an offset from the specified center point. - The scale to use. - The center offset. - The scaling matrix. - - - Creates a skew matrix from the specified angles in radians. - The X angle, in radians. - The Y angle, in radians. - The skew matrix. - - - Creates a skew matrix from the specified angles in radians and a center point. - The X angle, in radians. - The Y angle, in radians. - The center point. - The skew matrix. - - - Creates a translation matrix from the specified 2-dimensional vector. - The translation position. - The translation matrix. - - - Creates a translation matrix from the specified X and Y components. - The X position. - The Y position. - The translation matrix. - - - Returns a value that indicates whether this instance and another 3x2 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Calculates the determinant for this matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - The multiplicative identify matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Represents a 4x4 matrix. - - - Creates a object from a specified object. - A 3x2 matrix. - - - Creates a 4x4 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the third element in the first row. - The value to assign to the fourth element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the third element in the second row. - The value to assign to the third element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - The value to assign to the third element in the third row. - The value to assign to the fourth element in the third row. - The value to assign to the first element in the fourth row. - The value to assign to the second element in the fourth row. - The value to assign to the third element in the fourth row. - The value to assign to the fourth element in the fourth row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a spherical billboard that rotates around a specified object position. - The position of the object that the billboard will rotate around. - The position of the camera. - The up vector of the camera. - The forward vector of the camera. - The created billboard. - - - Creates a cylindrical billboard that rotates around a specified axis. - The position of the object that the billboard will rotate around. - The position of the camera. - The axis to rotate the billboard around. - The forward vector of the camera. - The forward vector of the object. - The billboard matrix. - - - Creates a matrix that rotates around an arbitrary vector. - The axis to rotate around. - The angle to rotate around axis, in radians. - The rotation matrix. - - - Creates a rotation matrix from the specified Quaternion rotation value. - The source Quaternion. - The rotation matrix. - - - Creates a rotation matrix from the specified yaw, pitch, and roll. - The angle of rotation, in radians, around the Y axis. - The angle of rotation, in radians, around the X axis. - The angle of rotation, in radians, around the Z axis. - The rotation matrix. - - - Creates a view matrix. - The position of the camera. - The target towards which the camera is pointing. - The direction that is "up" from the camera's point of view. - The view matrix. - - - Creates an orthographic perspective matrix from the given view volume dimensions. - The width of the view volume. - The height of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a customized orthographic projection matrix. - The minimum X-value of the view volume. - The maximum X-value of the view volume. - The minimum Y-value of the view volume. - The maximum Y-value of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a perspective projection matrix from the given view volume dimensions. - The width of the view volume at the near view plane. - The height of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a perspective projection matrix based on a field of view, aspect ratio, and near and far view plane distances. - The field of view in the y direction, in radians. - The aspect ratio, defined as view space width divided by height. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - fieldOfView is less than or equal to zero. -or- fieldOfView is greater than or equal to . nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a customized perspective projection matrix. - The minimum x-value of the view volume at the near view plane. - The maximum x-value of the view volume at the near view plane. - The minimum y-value of the view volume at the near view plane. - The maximum y-value of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a matrix that reflects the coordinate system about a specified plane. - The plane about which to create a reflection. - A new matrix expressing the reflection. - - - Creates a matrix for rotating points around the X axis. - The amount, in radians, by which to rotate around the X axis. - The rotation matrix. - - - Creates a matrix for rotating points around the X axis from a center point. - The amount, in radians, by which to rotate around the X axis. - The center point. - The rotation matrix. - - - The amount, in radians, by which to rotate around the Y axis from a center point. - The amount, in radians, by which to rotate around the Y-axis. - The center point. - The rotation matrix. - - - Creates a matrix for rotating points around the Y axis. - The amount, in radians, by which to rotate around the Y-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis. - The amount, in radians, by which to rotate around the Z-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis from a center point. - The amount, in radians, by which to rotate around the Z-axis. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a uniform scaling matrix that scale equally on each axis. - The uniform scaling factor. - The scaling matrix. - - - Creates a scaling matrix with a center point. - The vector that contains the amount to scale on each axis. - The center point. - The scaling matrix. - - - Creates a uniform scaling matrix that scales equally on each axis with a center point. - The uniform scaling factor. - The center point. - The scaling matrix. - - - Creates a scaling matrix from the specified X, Y, and Z components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The center point. - The scaling matrix. - - - Creates a matrix that flattens geometry into a specified plane as if casting a shadow from a specified light source. - The direction from which the light that will cast the shadow is coming. - The plane onto which the new matrix should flatten geometry so as to cast a shadow. - A new matrix that can be used to flatten geometry onto the specified plane from the specified direction. - - - Creates a translation matrix from the specified 3-dimensional vector. - The amount to translate in each axis. - The translation matrix. - - - Creates a translation matrix from the specified X, Y, and Z components. - The amount to translate on the X axis. - The amount to translate on the Y axis. - The amount to translate on the Z axis. - The translation matrix. - - - Creates a world matrix with the specified parameters. - The position of the object. - The forward direction of the object. - The upward direction of the object. Its value is usually [0, 1, 0]. - The world matrix. - - - Attempts to extract the scale, translation, and rotation components from the given scale, rotation, or translation matrix. The return value indicates whether the operation succeeded. - The source matrix. - When this method returns, contains the scaling component of the transformation matrix if the operation succeeded. - When this method returns, contains the rotation component of the transformation matrix if the operation succeeded. - When the method returns, contains the translation component of the transformation matrix if the operation succeeded. - true if matrix was decomposed successfully; otherwise, false. - - - Returns a value that indicates whether this instance and another 4x4 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Calculates the determinant of the current 4x4 matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - Gets the multiplicative identity matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The third element of the first row. - - - - The fourth element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The third element of the second row. - - - - The fourth element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - The third element of the third row. - - - - The fourth element of the third row. - - - - The first element of the fourth row. - - - - The second element of the fourth row. - - - - The third element of the fourth row. - - - - The fourth element of the fourth row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to care - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Transforms the specified matrix by applying the specified Quaternion rotation. - The matrix to transform. - The rotation t apply. - The transformed matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Transposes the rows and columns of a matrix. - The matrix to transpose. - The transposed matrix. - - - Represents a three-dimensional plane. - - - Creates a object from a specified four-dimensional vector. - A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin. - - - Creates a object from a specified normal and the distance along the normal from the origin. - The plane's normal vector. - The plane's distance from the origin along its normal vector. - - - Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal. - The X component of the normal. - The Y component of the normal. - The Z component of the normal. - The distance of the plane along its normal from the origin. - - - Creates a object that contains three specified points. - The first point defining the plane. - The second point defining the plane. - The third point defining the plane. - The plane containing the three points. - - - The distance of the plane along its normal from the origin. - - - - Calculates the dot product of a plane and a 4-dimensional vector. - The plane. - The four-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the normal vector of this plane plus the distance () value of the plane. - The plane. - The 3-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the vector of this plane. - The plane. - The three-dimensional vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns a value that indicates whether this instance and another plane object are equal. - The other plane. - true if the two planes are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - The normal vector of the plane. - - - - Creates a new object whose normal vector is the source plane's normal vector normalized. - The source plane. - The normalized plane. - - - Returns a value that indicates whether two planes are equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether two planes are not equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the string representation of this plane object. - A string that represents this object. - - - Transforms a normalized plane by a 4x4 matrix. - The normalized plane to transform. - The transformation matrix to apply to plane. - The transformed plane. - - - Transforms a normalized plane by a Quaternion rotation. - The normalized plane to transform. - The Quaternion rotation to apply to the plane. - A new plane that results from applying the Quaternion rotation. - - - Represents a vector that is used to encode three-dimensional physical rotations. - - - Creates a quaternion from the specified vector and rotation parts. - The vector part of the quaternion. - The rotation part of the quaternion. - - - Constructs a quaternion from the specified components. - The value to assign to the X component of the quaternion. - The value to assign to the Y component of the quaternion. - The value to assign to the Z component of the quaternion. - The value to assign to the W component of the quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Concatenates two quaternions. - The first quaternion rotation in the series. - The second quaternion rotation in the series. - A new quaternion representing the concatenation of the value1 rotation followed by the value2 rotation. - - - Returns the conjugate of a specified quaternion. - The quaternion. - A new quaternion that is the conjugate of value. - - - Creates a quaternion from a vector and an angle to rotate about the vector. - The vector to rotate around. - The angle, in radians, to rotate around the vector. - The newly created quaternion. - - - Creates a quaternion from the specified rotation matrix. - The rotation matrix. - The newly created quaternion. - - - Creates a new quaternion from the given yaw, pitch, and roll. - The yaw angle, in radians, around the Y axis. - The pitch angle, in radians, around the X axis. - The roll angle, in radians, around the Z axis. - The resulting quaternion. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Calculates the dot product of two quaternions. - The first quaternion. - The second quaternion. - The dot product. - - - Returns a value that indicates whether this instance and another quaternion are equal. - The other quaternion. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Gets a quaternion that represents no rotation. - A quaternion whose values are (0, 0, 0, 1). - - - Returns the inverse of a quaternion. - The quaternion. - The inverted quaternion. - - - Gets a value that indicates whether the current instance is the identity quaternion. - true if the current instance is the identity quaternion; otherwise, false. - - - Calculates the length of the quaternion. - The computed length of the quaternion. - - - Calculates the squared length of the quaternion. - The length squared of the quaternion. - - - Performs a linear interpolation between two quaternions based on a value that specifies the weighting of the second quaternion. - The first quaternion. - The second quaternion. - The relative weight of quaternion2 in the interpolation. - The interpolated quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Divides each component of a specified by its length. - The quaternion to normalize. - The normalized quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Returns a value that indicates whether two quaternions are equal. - The first quaternion to compare. - The second quaternion to compare. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether two quaternions are not equal. - The first quaternion to compare. - The second quaternion to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Interpolates between two quaternions, using spherical linear interpolation. - The first quaternion. - The second quaternion. - The relative weight of the second quaternion in the interpolation. - The interpolated quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this quaternion. - The string representation of this quaternion. - - - The rotation component of the quaternion. - - - - The X value of the vector component of the quaternion. - - - - The Y value of the vector component of the quaternion. - - - - The Z value of the vector component of the quaternion. - - - - Represents a single vector of a specified numeric type that is suitable for low-level optimization of parallel algorithms. - The vector type. T can be any primitive numeric type. - - - Creates a vector whose components are of a specified type. - The numeric type that defines the type of the components in the vector. - - - Creates a vector from a specified array. - A numeric array. - values is null. - - - Creates a vector from a specified array starting at a specified index position. - A numeric array. - The starting index position from which to create the vector. - values is null. - index is less than zero. -or- The length of values minus index is less than . - - - Copies the vector instance to a specified destination array. - The array to receive a copy of the vector values. - destination is null. - The number of elements in the current vector is greater than the number of elements available in the destination array. - - - Copies the vector instance to a specified destination array starting at a specified index position. - The array to receive a copy of the vector values. - The starting index in destination at which to begin the copy operation. - destination is null. - The number of elements in the current instance is greater than the number of elements available from startIndex to the end of the destination array. - index is less than zero or greater than the last index in destination. - - - Returns the number of elements stored in the vector. - The number of elements stored in the vector. - Access to the property getter via reflection is not supported. - - - Returns a value that indicates whether this instance is equal to a specified vector. - The vector to compare with this instance. - true if the current instance and other are equal; otherwise, false. - - - Returns a value that indicates whether this instance is equal to a specified object. - The object to compare with this instance. - true if the current instance and obj are equal; otherwise, false. The method returns false if obj is null, or if obj is a vector of a different type than the current instance. - - - Returns the hash code for this instance. - The hash code. - - - Gets the element at a specified index. - The index of the element to return. - The element at index index. - index is less than zero. -or- index is greater than or equal to . - - - Returns a vector containing all ones. - A vector containing all ones. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Returns a new vector by performing a bitwise And operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise And of left and right. - - - Returns a new vector by performing a bitwise Or operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise Or of the elements in left and right. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Returns a value that indicates whether each pair of elements in two specified vectors are equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a new vector by performing a bitwise XOr operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise XOr of the elements in left and right. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Returns a value that indicates whether any single pair of elements in the specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if any element pairs in left and right are equal. false if no element pairs are equal. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar value. - The source vector. - A scalar value. - The scaled vector. - - - Multiplies a vector by the given scalar. - The scalar value. - The source vector. - The scaled vector. - - - Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements. - The source vector. - The one's complement vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates a given vector. - The vector to negate. - The negated vector. - - - Returns the string representation of this vector using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Returns the string representation of this vector using default formatting. - The string representation of this vector. - - - Returns the string representation of this vector using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns a vector containing all zeroes. - A vector containing all zeroes. - - - Provides a collection of static convenience methods for creating, manipulating, combining, and converting generic vectors. - - - Returns a new vector whose elements are the absolute values of the given vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The absolute value vector. - - - Returns a new vector whose values are the sum of each pair of elements from two given vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The summed vector. - - - Returns a new vector by performing a bitwise And Not operation on each pair of corresponding elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a double-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of signed bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a single-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Returns a new vector by performing a bitwise And operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector by performing a bitwise Or operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Creates a new single-precision vector with elements selected between two specified single-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new double-precision vector with elements selected between two specified double-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new vector of a specified type with elements selected between two specified source vectors of the same type based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The vector type. T can be any primitive numeric type. - The new vector with elements selected based on the mask. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose values are the result of dividing the first vector's elements by the corresponding elements in the second vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The divided vector. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The dot product. - - - Returns a new integral vector whose elements signal whether the elements in two specified double-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified integral vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in two specified long integer vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified single-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in two specified vectors of the same type are equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether each pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left and right are equal; otherwise, false. - - - Returns a value that indicates whether any single pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element pair in left and right is equal; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are greater than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are greater than their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than their corresponding elements in the second vector of the same time. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the single-precision floating-point second vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than or equal to their corresponding elements in the second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than or equal to their corresponding elements in the second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than or equal to their corresponding elements in the second vector of the same type. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than or equal to all the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than or equal to the corresponding element in right; otherwise, false. - - - Gets a value that indicates whether vector operations are subject to hardware acceleration through JIT intrinsic support. - true if vector operations are subject to hardware acceleration; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision vector are less than their corresponding elements in a second single-precision vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in one vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all of the elements in the first vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than or equal to their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than or equal to their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less or equal to their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are less than or equal to their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than or equal to the corresponding element in right; otherwise, false. - - - Returns a new vector whose elements are the maximum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The maximum vector. - - - Returns a new vector whose elements are the minimum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The minimum vector. - - - Returns a new vector whose values are a scalar value multiplied by each of the values of a specified vector. - The scalar value. - The vector. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - Returns a new vector whose values are the product of each pair of elements in two specified vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The product vector. - - - Returns a new vector whose values are the values of a specified vector each multiplied by a scalar value. - The vector. - The scalar value. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose elements are the negation of the corresponding element in the specified vector. - The source vector. - The vector type. T can be any primitive numeric type. - The negated vector. - - - Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector whose elements are the square roots of a specified vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The square root vector. - - - Returns a new vector whose values are the difference between the elements in the second vector and their corresponding elements in the first vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The difference vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector by performing a bitwise exclusive Or (XOr) operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Represents a vector with two single-precision floating-point values. - - - Creates a new object whose two elements have the same value. - The value to assign to both elements. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of the vector. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 2 elements are equal to one. - A vector whose two elements are equal to one (that is, it returns the vector (1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 3x2 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 3x2 matrix. - The source vector. - The matrix. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0). - The vector (1,0). - - - Gets the vector (0,1). - The vector (0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - Returns a vector whose 2 elements are equal to zero. - A vector whose two elements are equal to zero (that is, it returns the vector (0,0). - - - Represents a vector with three single-precision floating-point values. - - - Creates a new object whose three elements have the same value. - The value to assign to all three elements. - - - Creates a new object from the specified object and the specified value. - The vector with two elements. - The additional value to assign to the field. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the cross product of two vectors. - The first vector. - The second vector. - The cross product. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 3 elements are equal to one. - A vector whose three elements are equal to one (that is, it returns the vector (1,1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0,0). - The vector (1,0,0). - - - Gets the vector (0,1,0). - The vector (0,1,0).. - - - Gets the vector (0,0,1). - The vector (0,0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 3 elements are equal to zero. - A vector whose three elements are equal to zero (that is, it returns the vector (0,0,0). - - - Represents a vector with four single-precision floating-point values. - - - Creates a new object whose four elements have the same value. - The value to assign to all four elements. - - - Constructs a new object from the specified object and a W component. - The vector to use for the X, Y, and Z components. - The W component. - - - Creates a new object from the specified object and a Z and a W component. - The vector to use for the X and Y components. - The Z component. - The W component. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 4 elements are equal to one. - Returns . - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a four-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a four-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a three-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a two-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a two-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a three-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Gets the vector (0,0,0,1). - The vector (0,0,0,1). - - - Gets the vector (1,0,0,0). - The vector (1,0,0,0). - - - Gets the vector (0,1,0,0). - The vector (0,1,0,0).. - - - Gets a vector whose 4 elements are equal to zero. - The vector (0,0,1,0). - - - The W component of the vector. - - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 4 elements are equal to zero. - A vector whose four elements are equal to zero (that is, it returns the vector (0,0,0,0). - - - \ No newline at end of file diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll deleted file mode 100644 index 46308fdb3acf521d69320d5d9f7436fafb898d63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161152 zcmeFa36z}Ibsku#s;;d!{9QmdHWC0ykVP~X5X}Xo7BneRyC|BQstdG4N`@p-lqeCD zY!hf1@)l1_nYKLfI8I{Aju~Yf&&08v*l{wEV$Vq9IF?Nz$958r!YE_MImwyK@tn-b zBq#EG-@W%Ox9Ug#%?8_15<*n{_uc!w`|jKCegD$$82we(>=#hd%oBQy+Nxu@4`5-(w&7$WzZ8dhh8& zPk;O)haUgPp}XJtz@ZO6^)07wn4RriWvcJHr&fFWjz;YlzyGPVP})niD-KQXI997& zSFhDN%KgOKKpz7AD6X~IPN6~4ZvG3`+GoMUf6qSBK)qJKhfw~Pu9hSV|E_}GcanhK zol_+2->vo9`IDf}*K0Gl{F}GbYX^dCGuK1WbU}BJesh-ZhG$NH+cQX?TZXZaNnJta z{|>>b8=gM%^!vaR+hAj@g~SaWxLT{N-thG4C!Ye4w$kPrAvaIp?xHyVH)OlwA8o7G zrfSdplO453pRCoo!mZW*(HrZv9|hz|)c?HkHo9D1A1u^ry`xvxpB(f-d`PHWLfue* zvhn0#cjPWcYAI5CgnHtWD6)Cv`r>LTX`R^%?h)3id9=59bpNqNjpJuWtyb*n4KPAl z^{4g$()()T>aW%s*Ui*h`<~hl#&z|^(bmx&(*O0^+|F79#_jmA#&w4Ws9@{5h5FM_ z^3lcsUE3R6hM%ML#^7?f9{r+X_6lUrr=euWk;VE?9a(Dpl;Drnmy8L9v9~~(+s(Sss>bnDLHHXV^g&|tzlKmVbQX0Ld%i8Q$bTGLNy)P1A%Be{&X9)+BN8* zjz^C_{iZzelX>FBl(^xy(Y*D+LDn6ec!*cn(?3?P&Eg7SvDjOvy>tkRMD6}oka3(~ z{ZQHN#AhDN$&d$`9&mXu)hv(aV|W|?L5D|$Civ4R1D#(iK0(8FKk*Q9&|dOk*94z7 zp-GA>aIHy}R0hTc^A%T8#(z;I8sjhQ zsRMe8)62VB7uv(db8Pe%h`PVMG@Nb^P?O&A|8w!B-qB1;YVn{2D_C=8advrE=R!AV zA?p6_(r~sLwanyNQqR1`Y(crresi%uwY=^}R1V2zrEe-oq#gyv%{l%C1 z&0JyX%%Bi0+U&O$`)w#}T`1a_LV_PCP|1F~uxe6aD_5BMKPbGJ3OkGaE);ey6x|E^ zqJ;!MSfIZBZeca1!cML*4Vj?u1Qqrc`_oX^yHHGL3JHF&n1;gXVmejX^+XzILE&qu zaAvVT3xzWmirEX7M+*slsF;Pq*B=Hu2TsY&PWLtE=CFWP$?HXZwVF~aS0du zvTOOc{I32D>}#%#DO%@ZJjq4#mvE7xgo`D%go|~ugp0+lgo_ocgo|az)g-R_lQp4e zox6amiEyzllyGk-<=$AzJyy!Ssg!%Xl)D0Mz7C}gXU!Q*{yO)bN$xGB+*?bzw~ZB- zwj*C0`Rm-7Tyes^y_9=LDfcyF#ih;adZ(EDb?#e}+}Dk%NZXTFLH;^-DyKrYC&yHz z4arxU{B`b4PK9vqEal!+%6-FFadEp^xy~sjf1TUbB=;VwxVqk09H0U{_;$_O?@!|_ zA^CQV>!$};bz5g(UhmoF;_;cr4?Nynlilsc)*0yTJ*)oTQy269PH4H}fYbjwApT#w zIsD5gYJa&O2!FCqbnXvAn{z$lg0ynC*~TSE{lTk}KUhpT zt;{v%7+$!zV;D4}-OMq(DmjLQuRT|ZF%OZNFXABv&B;T&DtU;7ZwXH4F;|hAFXAc& z&B;}~D!Gcqv}+B{(J`Nqnq9A@X&5vopYf{XGZwQ>GjokOkJRjXkn>H)L(rU@$E%X_ zSj;=k%r)jkQu9T;$e=lSkyj-zvM8KpPTnzhlA15#PM+C3mvuJLR0f zV}2!-U&OEc+2~iwjO*_zc3o&R$LAWDOT)&JD+iNc$NdoO88-Hm3ib{gdrJlThK+rt zg8jqB{!+n#VdFrl;Id)kvQok2!^Y*Mf`f(#$6PZI&6MYw zg~$)rm}?HAx$<1|5c#1fxzLHb@=ZCea;sS4)1L(%LG}!=AAcgt{2(q#U2(q#U2(q#U z2(q#U2(q#U5E&X^DQ^I7y1F@io4FUVRqrYG_}UZqAefkVzWaj!A{?ps+6UQQk@@Zy z8LZipTa#SxV2y0=dyBo^8r{&LcHEjED6=NW%B&F?tl67elU#yTYa4M1_7(fQHR=TH zyMP75w~Yv(bziPExdTC~xC8r({a&j&0Q)DkiU3;o=UTa``+gKx;6QP}Yt_yFz+}q> zL0QWMSy{`84AvaTtx4|vNo%>gxu{%LT;{D&Z{f1ZI*I^VFH?^n@u!}bH*4!~-Ej;P z&U3T#S8h|<1UEK%t>&<2MK@9O^y19&Z2LlI*y;@5bbn`QIMdNXuYbMx(sXV)mq}G} zqA`n&de)T4&L)Sj3*vMSyT#P-jraSr*FS*8E^_6XquTCi^jk%%$t9xSGM%!}wio-I z<-ItBgEML?d&g@YMHtH#r`f> z-M;|G5yE0YuWx^-*afTMd?u^=xz%aPLN(kQRlVC(%k*7b>@Pv};stCQRJ~iTP`w1z z*i4dYw*hhb#0J5ts|~WpRLdORyV&0c)q5{s-C+$n$29K79B5x?c89}ycYx!k zUKZ15cV!TTUu0QWYdkXx{rzUqJkoDnhe?exS{RH|%e|tt_&gVo{uFPn9LBAhX3<7T zxRsKMQXkFTV)-3r&j(yuHy&v`gA}HA1zfNlsN?c%xnBqtJ`%vOOD{(JM+_(5Vk$uec{U~uSO58u>gsd0)vl7Lf zDE4D!Vm9l{WQlIlr=e=ZWlJw%9+25-&rE2d%_| zS&8Cm6bDh_!Qx;l@v^*C(+Y+Xu}$vpA1V$V>0f~oudosiqr@u~pC__^c(H#aN<54b zue4UZGAogohl?vw;+4gfsl>y1iE&|DUBM#Mcn0@9_V=$Ut~%1c8iihMg&sknS1&$K zaR10+{~8o}1chE>)x0Jvl$duF*PzgAifdA#NAg0sddNb(`Unm!bdl)~ia}UrxCC6g z+_iP4e{FH?h2~J#+Ot@zn)j2jgvCH^&7GYJtUZy{3aq`6)efwEk%bzouKkhK4Xgu^ z)eEf4B5OLZE{`lMl&T96Z7>XroAG*)hZV?p(~*ZY!gw>0hgodA*~r5@Gu~X}VI~-F zKJs`A?0&Xk-ssUATYZl-I*i-jKUy61EAKLTI;_0Q#d2zQI&Jrpk=mX2$b^;Joj1sY zmD-(m$Ap#IeNSMecISODL8W%*O)+7mcIO>2VWoCI5Lj8e^JbX9a1Ipu;_}E#?amuv zic9T&DDqOfACA1#?z{!2c~iUd1{m9YIdAv4|E&HV&IN1>x~{m+Z$a0i-NP1ieR2H- zaY1c-W4bgSAP-9?HzXbP=uhSD$+;*^xqEXi_7LUn%eh$Rm5T*3>BU;C+yglm>!orp z%eh$7nh&7D*XI@HhNZJxD=a(U4aE(92fPs#4m;qD#f`4QSh!Fac&@@&S(NK4jBrM| zuEIA4uB$M-BE`B2!xK`jt1z}h<+=*uV_sqIms;WT(!;U=A1jXe4frNhIBdW- z6*r;6+<3Jw83#N_o^6iG<&8JtqQVKw8*jozg%g)I-X4TuH|2(LTg?rVefoHD-0#yX zFf8oTE5(X4j8VjcK{Q+skh*ZuWcmEwC!= z<+l{Kz$)(H+As`29wHA`B`)veJ%o~O$xGs{8%vTs{MO=DzlYz3lENN-TXCB!iSfuo zOX*L?Ihy#oM1FVj^3b z5Fwky+;~JSWFulCTO8fdNRC#9QflPA&k-?^EsecU8ix~~U(?dw`5Y0NEsKfY-S{{h zvHjQA7x6go3nT|<$`}*>O1oCWe}&wDzV7H^Z}~vIB|hl<4!sVrcJ`RPwKVLt)D8W8 zcUa5OrPK8%;SSlt(u8r1v*_HO_?fHUokUYfL~`}Vd&V`gD5iAb(~Er~EyLN1c4UrM5xBqF)`vq?0YL?l;#D2eE*T5FJ8 z`F68`?yB)gt~_RZx~#@0x$+j{V_67%k}EeEpRTLnNv`ZQKHXR2ll=OQqwbg|E&;1q z&v6y7JS6j;qnm0Xl6lY3T{RKOyyxh)nuuiHb9<7AWZrXhV=WiSyyxi7nuuiHb98G> zL^AI=y0<1GnfDyMToaMZdydYoiActtqr+=_lCkFwB|gd6bB7b3Wb8RQzov&|>^VBX z#wR)6b8#tN{q;1;xEfm?l6ei$(?LWsuOUpe)L^2jk_tp3$W5IM_jZZQbOc&Pp zB*zOz_lyaESAQ=_W12sO$ zaYYy~V~V)-S_YC)5gkn9lN?usQ8d;Rt0@D?*c5jrKFQb=cO^c_STG$(E12YX!5E`s zHMl!vAQ=_illUY>QMSRW&p3-M3@bn0E73>EW*Qech(3H`d+ z-rx^*)LOmlb%KB79-+e85v<0M^^ul4t){TwTxbq3=1fs`c74GqitE?P3BE!wXw~ti z049$ed{f+SEwlz0ji$=q)A}u^Ev^;R))sAf1u5=#7CHlr;h@c(bbD=SUP4<}wB?8L z6!&`zy#Ypk(B|GG@Y>R3gSKhWmY;%C+@D#P8DPEyZSFM!uPx0WXqy#nvst@Q+@D*R z8(=a8ZSEZcuPsd@Xqy*p`FT0T{hbRt2bh9En|p!4YfEzp+6vKDWVTVx;JhWS!#vu7zC#%<7=cy*B`D*(@oGlvepxTDa@k#MH`WKwwXmvs>lt zb~(FK&hD18F_X(InJ#C~l(T2c*>pZjYDwR-giY78giX)0gpK8=j7`5YN9XZ$Tuxk9 z(Cf_BkkA$MI7`^{HcQy_G)vg@GE3O>FiY6?JB}>@!Bum(IBy)D&6>&jc{S`Qrq0O;1G_y50u+eX2Z0IOsWBDy(V;wDHV?iuq zV`VF2V~KL?yh?Fba8<%G)XX-5P$jGfC2V?&C2Ts2C2abNC2YEiIXkaX z+M3=S45y=*ZAF1iKe2>OH?f3GFEMB5Wu^@*mPsEm+pt2JbP-F~^bkwfbP#iPUS`_n zjs@j(53_A8u<0G<>|9IQ-l7)zhS_!&w9qxo*}0aqt;PD&G0e8HpoM;637c+V37cMF z&d$qBn_sk?K4G@mg);9MW9OUR8|zOOJMc&Y%;dROB)rJGyzPTI|%!5X-u(R}KS#J-7;R@<%z4{4tCIMdSF z@n3D#<>+W>Z9^RgU$1#vPrVsBF$!qkhp}s6PtY@}+jn56F5Asl?vVmsTKdOdpXWOg z*Ro9cnh>bN`Qs`=vVHJvV0t4}z;L$8@?=F8um zc(F5~Iyp)HAL}FU-X1GD`syvp2~B21Rt^=6y=C#GVzS-R zT9lU~ujC#pdiq8#%25X!?WROl4i${ObMd93H_>hwc^2nbIhV6O@}}-FJXIzy>Y^NV zy-|)5SvgcN_6Ek6ikXRW(h8NABQNkCE9Uh5U6i9vIm%HYD~Afk-pBY-F*i|8TEp^o zlV{qF6+87&Hk708I?7QZD~Afk-p=?^v2&uFv~K0~k#~KM;kh<>)feTcBad>F$jYID zu@^PIR4iyYnLEF*OW&K%W-DA3?Xp$gKUvr%_qXcl1lnS8tRBtbSL7vOkC}qNFeHKD z#ba6tLlPKXJf@v6B!S_@V>$^#5*S`QrkgM%f#JntdI>`k7+ySPI$=lx!;8nvBn(Ml zc=4FogdqtGFCN42!rG7|FuZsSV-3TQ1cn!nVc=mHlECodF^obCLlPKXJcc2OVMqeQ zi^niNF$_sycscR^q1Up}#Wh{;aZHXb#w(_Qg{PFp@D0Nnm*K z7=|^5AqfmG9>W;NFeHKD#bX%o7=|P;ym$*zYNV|?wxx)wB$9KI+od;3x_Is=9zFuZsS$_N;e!0_TR z*CY%{V0iHu?9@RINnm*K80@kELlPKXJO(>tz>oxn7mva27BD1%;pN0PV-e3<4>n%3 z^{{UR4J3yjlo!l>DcExYh9oe&c+3q6LlPKXJcdD`^)*Rgc<~rUh=w5v3@;wTaM3U% zf#JntjwcLBV0iJEm4qP)3@;}RHeBnW_pJ4P2yuYdz}V6(Avu)S+C7AEra?#!*ZJ!q zj5!TLa=6Z44`KXi5R$`n{+{?aHu9{WF@`Q`DI-!-KyoN=#QQQBof?GXaGk#%!bsI1 zB!}z#^^n&j2+83(e^2}drfp^^MzUJE@;0CQwJA5rp}a}&Aq;5E29m>d{+@Wk7l3I{ zUI61;%T019@7enT80#8@OcrbF&rFPp)ue#r@I&jo_(JYX7?Qy7;xTt6 z3`t;k@t8Lx3`t;kS$=oc*qE%=7H{@>?@oD14xf})_&w&HgdqtGFU2nO;42+_zHR$r z&!igb{x-#)sSNH`+ZTJLa=5N(}g{PEGG;}V0gKN*mG?Yu_rLtg~lvlq-m=JNnm*K)-uvG z3`t;k@fb#$h9Lf z*Df{oT&s>f*Q#UBwd&Y&?UG{8wd&Y&?UG{8wd&Y&?NVdUwN1pHz*NSbz*NSbz-&48 zT-!wK3Cy;|o^Rj2*fXi#zSuLBfqi2eW6x9$_MUBwJySW@zqT>{#c)5hwbF_)r6PU`_ z6PU`_6PU`_6PU`_6PU`_6PU`_6PU`_6PU`_6PU`_6PU`_6PU`_6PU`_6PU`_6PU`_ z6PQbkJx7~}J%Oo=J%Oo=J%PdgKQ>>mQ-}FN5*S|moWd>}FeHKD#bdBT1`J7Hc<~tQ zZUI9Q7+x+R_8e^@_5=pI(3mBRG;Nh22@EgZT1J|NAqfmG9>Yk}FeHKD#bX$08iph= zym$;FO~a4`h8K@vq-hwE!0>VjvFE5d_8e8mo}=p6b9AY(=cqdN9974jqw3gmbV;%2 zs5T~h2hs*XKJml}JHHW7OQQyF^#QyF^#v*p-xw29agm^}7u)IJV}3OlvE7e3oK z^A1Fi^})S-M0TN8_3&M7;^DjW&@CJdJigJyUlGC@+p`Ds=yGO%!vh#`LLG)Kr^kpB z>M(RUJw}{RhoQ^qG30oA=yG}tIUa)+8pDv|F?2b-9&$WJoKV+3;)FVz>2i8K;)FWP z+ysUkUlv_XuZJ9uq08wpxi6Z9VM$JK$)L z<4d8-X{8uOoKUBSE~m$c6Y4N@IXy<4P=}$*=`rGjIt*P-j}a%-Vd!#tj5whVLzmNI z#0hm6x||*(PN>7s<@6YFLLG)Kr^kpB>M(RUJw}{Rhmji~uD`?ybr`ywUXM7T4nvpI zW5fw{7`mJuvk52EX}BtBfY-PKju<(9bYVz^QVc_m$3QTKA;)9ra+0eA!Kay@SQ8*^(i-|3JM^@7jSYMLPo{Icdm@pqyUp?M{q(NhAyX# zJ;R6->M(RUJw}{RhoQ^qF&jFeE-#Ap~vYlnGb3hdYm4U`JjfO$LTSd4{8{C zoF21jAJjC^<1`INIM$sHY8ZN)9+UZ?hM~vlF_{l)7Ap~vYlnGb3hdYm4U z`JjfO$LTSd4{8{CoF0?;poXEx=`ooPY8ZN)9+UZ?hM~vlF_{l)7Ap~vYl znGb3hdYm4U`JjfO$LTSd4{8{CoF21jAJjC^<1`KC7n0-W9fsW)h8&MU<}nO89s?I_ z3`35`z|$DRkmE7*IK9o}cnm#Gk0Hln=y7@sITZ(?y2n`SVFL^rP?a$s)G+iotrWwM z<1L}b=`ooPYI^8#dQ9en8ipRH$7DXJVd!ysOy+|ch90NKWIm{2=y7_?rhQP;Kp)gJ zpp(51Y7n}d4wCtx2BFL8Aej$p5W1WWvS}aG6wu`~1sH1H2Q>&?P6x?+P=nCrbdbyk zH3(f!2icqtYPsohT5gPX?}HkIE~kTR&Ih&JbU7_Iri%AL4MLaGK{oA!ngaTurojA5 za{PRu$LTSd4{Cboae7SVgBpe&r^jr<2erI+r@WZZV?L;1?wP=lV?O9B`t5;tZr?LF zNi~-JZF>JBmBC$T``-UZQ0JJc9$w6c!q3YM>^pFIG7mt}w z7?Qy7;xP;~O%F+6c<~qpnuZ|>3@;wTK+`ZJf#Jnt7-$-XBrv>G-2QN1wqWRK8c3en z#4|X+Na*SGFwitTB!S_@TgyPxFeHKD#bX#~8iph=5_-C_7-$-XBrv>qJq$DrLlPKX zJcfa$VMqeQi^nj~Gz>{#B=mIlFwis%Nnm*KdKhRLh9oc&dOAG}Gz~)%7+$;{2AYN; z2@EeD!$8w8B!S_@V;E=}h9oe&cnkwg!;l1qmrHp6ev1=;_7-_N}0S zYM>FeHKD#bX#~8iph= zym$-)O~a4`hL=lt2IrCLXK)^=eg@}}>Su5sxzuNHPE|jHbE^6ooKw}$;GDXoXK)^= zeg@}}OL_+9RP{4Br!MswoKu^41_u}kJ>A@7plRciBrv@AG0Z^IFeHKDWlP^4IJJpq zaDZXxiEj@aAKWKT+k6wBw&8aOrfNS|tJSb07vb3({d)~-7IU9t)c?}-yq6B>d|dgZokB@!wm1qbat>bEw{0g5-NH zc4JGww#DOw_ejsSj&8f{kG@RXAFa0i(LXKQAA6a$KUQt~V`lsDPhuCw16vPp2wgp2 zYv^D7xB=gPd=RWfd`0|L8!l%aA||FDcByx{)X=5YTx#S}r(Eh0m-=RxdN)(@t&N|6 zGY*f^zVkSbJ9ODsK5*u3U-{U~cOG#D*}J~6xI8t0tJ}K&mHf_QQjPi8+Me$`rZUhT zt?fH&N#(#xM>+1J=&#^+9#c8+^jq6^){@FWw19HlhtxOz&f^369nSQf$D20z&ZCsm zTzmrK3n52q?6BpF8-D09FGxQ0c+&FQ322S08a$ zQ7>B-R==&zuUD0S@bQMY6xfF!^T$qg)8c_k24ga6<3WpUeQ*#uFFQMlypj8DYHyBbmXNj4+Q*wvb>XGZ>Q*)=w~!8H~w= zU1#3I?JFCQ*mmv1S#Cg%oztiuZXoupNNcg(sW_4ujLB#fGKLl-nZcNhFdolX`;*LI zOhy<_XbeU&gE1LlJftxg$qdG1gz=olU?ejblM%+F8iSF{U`$3BPiqWDGJ`Q0VLY%g z7|9IAWQ1Xz2{4iwjL8V&v5jdXnZcNhutNz(GJ`Q0VPnTR8BC9Ltn0D%hC)eZFealm zESmvFGJ`Q$G9Yo%Vgqt@N47%p83L;#N!3Gd!#*!*R$({?7|9IAWV8x}1Q^K-#$<%? zM8^sxnZcNhut9>6%wSAL7|(S~8_5jDWP~At3NVrxjL8V&>5ge5nZcMWX;_$C*04P4 zF+C(z58W&K@}xB^k9iD6GJ`Q0t>Q_K!ANE>CL`>|1S6Tjn2fMv2}Ux5F&SYuB^b#J z#$<#YPcV`hjL8UFNidQbjLDLQMJHRs{xm#R4#$)J}8Gj<_A*p)kq}pMT8Gn0%k<4IBMyu{fFp?RJ$q0K* zf|1N%OqLjr38BWX45O0QCM6_qNN%qkAerf}OE{7_j_H!pFs~*`dwtSE(zIZ$Z`o;* zm3A`WNai@EOG?9Jw2t}3d{nI_MI>)XUjzP(a&^II~ z$uTHdC6&P%VNLh`sOavbh~y0u9=3h{(pvDI1SeSnCp(m#eS7_tj@2LCzF0k}hF`Qz zv3e?lyXW@B>Zu%VCfgUQr*gQqZeOgP%HcA&eX+WflNPP*i`BD&xL$2vtS$w)b!z)! zbt!9NCE3nc{rKi$^$a#8>y#~Pt+cF>%wSB$#j>4XBr_P35!OjCk{OK22vfovG7XRwW8 z^$Z4;$#`rY!FZAxjLBF>to;E-GJ`Q0VOY8YjARC5GQzO(1{lc<#$<#sBDaPmnZcNh zFsyn3Mlypj8DWgbO&iG!#$<#sA~zVx48~-H9ZWEi8H~vYJCtA~GZ>Q*b~wREW-ulr zj1jrnMlypj8DWgb4MsA9F2mIdgyIz7^`QnBe_*5Bv?fW#GZ>Q*#)#ZtBr_P35yptz zU?ejblM%*<++ZX#7?ULpi%zzN-6&SSP4;y9lN-kB8Em6iJ%eo&t7ov=%8kd+D>ME? zY6Ozn2y{|6jMX#P?NXdMBzGijBr_P3vE><&Tg#KoU`&>@JSK!1fALuTw&eD17^~;F zt;g!ewKV#^8^-E6?qqr0Fd405Hj34cJ0Ey`RdiXaGa9$%Bsm5pE4DnNaf6Z^gOU}Y zjK&R0atumVNk?Igu#UQDtbTmL!`?7fFM}Yx`pLtRSve+ZU@#L2jMezF1w#npjD;Ggd#gxmZ1e zZ4|3#uvWh6w$rLhGJ`Q07w1lbk<4IBMp!q&NM#_Aaiet5Eq5xH4KGJ`Q0jb}t|Fp?RJ$p~XaZZMJ=jL8UNL~byW8H~vY zV?=H+k{OK22xCNUFp?RJ$&!XeCtJgA6szB|xmZ1eZ4|3#u#IB%40cJex;6rx)D2_x z40e0oq<5qyC7HpPj4jWI+*+Pw24k|M4*d}B39Ct~v z`Z4DNZy2kOLGR34p3%6qJjpRAS+SECjT@BY7?iA%j=~yY9d*%I{n&(uy4PC zem|bge=p)|T;7Mv;9Kx>G-IAl%tn3iex#c9!45pHt4O{l(x`nHE-@CxBD>3RRjgCJ zoD!Nk4=~A0FYqUSO8>W76MtGhZVM}KRpoo2d}eWW`MOT`!k!WIcQgHh{vh>}dVxO= zbeD#+UCDd=A9g16V{fyrw}`E2gbR z(^=C=mJhKYQZMl5UH)1NJJ59scdY7ubd{0vGWz8zBjsgu z##Khj%jkitjFgwr?N%8nFQc!mGE!c4MU;{9vMZyElv|kMOke$4ZM^Ck@7Nnb()Wqm(i6|87VKL|E4lhUPh-)Wu&}}o|?)?c^Ta^m638)mlXva&|7)h z=Q+VVTx!Ix@iMwFDkJ4(^jlO$%FF1isEm}eLlzvd;|`za^~}SSNRIfu>|~UYa{6Rl z5q+QVc~+T+3y!|X>4kSDAxSU1D+x(@A-8u^OVZiGwPql;yw+#Bo0+&K>C2j4cux|N z#106nTW8Q=y=O5>`^TEKe~uLeOOL(3_PQyzH>O?qeSUAeC)*q6cj&4=cob@{-xZSS z!o ztufj!Vu$S3_sMRpj*jluC|8NpFZni3U1G;LbL<|$=fY;5?cm9uwDw5v-rcvsyLU1* z*dDW)J3(Dy$2fEB7Q*K?d^In(Ltf3hZ-ZC!q8;;@9m~Ovapu?^hR<#I=3YKN%efZplZ}sKvA#e5Fx4~O|(T;v*2iID$W1Km5SK@OQdE2jB ztL@K*Ok6})f33kc1M)v1(Zs53@gB+Jvsq$!+B`!_>=nQ~FP7?%mt@S#M9j-X^>>+K z-d3KMiR$k)#k}o2FB8?@af*36d0r-}zwZ?DqPbIjnW+BmQ_S1T^DI?u~Q z^>?CT-kCfv6V>03ig{=Ayi8PoS1RV6%kwf({k^G}cRtU{MD=&5V&0v3UM8x)PZjeP zd0r-}zgrda!re(@gNf?zS;f5lJTDXSohy9lBAeSsuvCa!Rx-C4(Ajh*8TB#|=O+{P zgl0as8Rl7Dk})q6F)tI&!n3v&g%*#ae*Slg~hQBc{6V+e!ig_6x z$Gl8bf9)&gMP!lkGEw~%u$cEyo|lPr{`h^4VYZEDk})q6(Pk#9zZw?vGCYrYnW+An zSj@}tJ?3RXzB11Y!I!5xg;IA_g^)gZY;kTIgmOL*L)n9~*d2h}0GEx1h zxS030JTDXS4LRQyn3fl93!d&-Tab)x%tUMpChV?eJ`Z^2XL(7+yiCNrOjLh!F6QM~ zVa&@!^~dO9UY;e!yiCYf>U>*ZnbEdbIqNsK*8*>qAsHK(iKvu`>W|mOysyjiG9h2J z^9EtE;?FPlU|ZhFB4HO z6YKo(4SXj!Rv(fvFB35@6V>0$i+Oqc8uKzy{Vlzim#4EaFB9^OJ>M2s#LGM9Zs4sl zB%@L$qEaU84sG5!_oTceV_qg=UM9jv`L^}E_p$$6=e?oe{2cKJ+WSxMyjLvv1~~7H zc8nkG%K6nebNkMFqaAsda3d8v#+lo9-W%;0KiU;L#+lo9-W%;0KiU;L#+lo9-W%;0 zKiU;L#+lo9-W%;0KiU;L#+lo9-W%;0KiU;L#+loG-g_+gkIj4mXQKMNH|Cwn^D6JRBIaeH`n)&hbp%S82gZ_LXh z-k6t(>hs>1mq)xYFB8@0y)o}ho|lR0^WK#=Hk|o0+IS?~Qr4aNZm9UY?iBMD=-Z%zH4;%S82g zZ_Ilr&&$L*fBd?C7#v&oNyfZP#5u-9^?7g1yM^=KnD-Sv?~Qt|%Im{K^?7g1i-;w) z1rychy)o|=&U<5CoNcCZnW#SRjd=%oUM8x~dt+W6@y5PqqWZiy=H(G@%*#aed2h_i zBi@*oiAy{0je2>+8}%|#ecl`M@`yL)Wup4LH|E{Kd2h_Sh4bE+cMIpeG4B@6dt=@$ zocG4OJmQV*%*3Ug_udlx^(~zD#=KiN?~Qr4aNZm9zQX6dv5mKI-W&67;k-BI-NJcq z%==27_r?b15pNu9OjMuu#=NiOd2g)c7S4NPULNtr$}n+h=eBZ-;2`7Rs|fJ@I?3{CO9+ICjGS$4kjb%WIRnU8A&JOk%7rbIvFY)WF(!8A;0A#>0}J)O-9nmW|EAg zlQAT>d?cNW@wdrHIvL|@laX{X#?K}r>12$LO-9nm82_4#q?0kEH5o~jJ;xq>0rlOV zck>b7&9mL?9Tii-Kz8(j;Rm9Op{mJ9IvGPzlaX{XhMFcL>12!^O-9nm7#*67q?0ie zG#N=JW2k2`l1|3x&158yzNIDs#FO!jUGDcS>Bk5!eoJ>a2$qpwONhf0{Wcf%s z8ABbDkyM$!ur}V!h$3t@*EpN`x0I}-F)D%*lA{-gFJ@8!K-oBFxMqDBu5_{evmKD znUtQqnLu((O2^%#B*&z5%}q*jOiJh5q$J0rbgxZHa!g7G+N31Mr1XkSN-{|G6~yro zgHExAIbY+5X%#K2Iz3`jLvl3CWb}AVM$*aX(VC2;lhI=}8A+8rM;j)34CBEW)-Kv+ z7~NA-LJ~@njP9q&NIDtaOOugwGP;i@BdIcdpK`p#Fcj6WmA5QD(eD&t$E1H~Do8>_ zlF=D78A+8rM@4o&h%mk8NNO#MGBu%IrWTq(fPZR zDw3lohneu6BqV7}=I_hUb?ccuPb<09`$o%HWY9nRjBN-sq{Ilyk$ z`%3;E)bDQe9#p23??D~T-h)anC#%vA0v*r)wwPaZ0Z;sqz=cUS9h0 zhA%JW1<1=w*G{~=qy=!r)dD^^c9;6g8@`qF_UvsSc}e)_#9K*P09TDqXbB%4yZ`)~ z8@_L3RY>m}T|4o;uRq+fvbsD;fb+(!C&6+-JiUT$@}FEU+S^9 z=cNYnQqN%Gr5-In)&tJ0C&zBy{#MD$I@yE#@N#US`x;y!{}yEvi-Q`ie+J!4r!pyN zFKuN~(q7umq@=yHlSxT?X*ZLS_R?M^CGDkH-C~VMdns1AC?)Nsvze5%momx;ZAIEk z8RrBkX)k4@6QrcQl(9~blJ-(YJ3&g?OBwG3DQWj=?U4<-o>7iw)W1>g)iTZrQqo?^ zNGC{1dnv|fl#=#RMmr%dX)k5G6QrcQlo3ymlJ-)@JV8p@OBwY9DQPcd+!Lgvy_Atp zkdpRN#y&wx+Di{*Qqo>}IFpk0Qbs^QGifh{R}iJ7UDwn3*GK&S7_NiQh!w#y>K_pI zQVg0XCGDlq8>OVZ6nkBilJ-(;R8dOWOR>pBDQPdo4iTlKy%ei^l#+H$0Yfg@6j-$_ zqy9B;uNF&gl#=#RMmpL%`WL{xl#x!5lJ-(YIzdX>OBv||DQPcdq!Xm1y_Atokdk&y zfmS!4@{>Ln1DoJO$OGP9%-AN1nebwUH&M)l7vGkPnQ%6tug#`seKy84T9d~w@|A@k zWrXANGOh_y(q78QCP+y;doa4po>iZV!Ax*c9dj=@QKcw9RpoE(Fb z^zgX8L^wGHC+Xp74hGxFF*r#NPtzm7$uT%d4^N{vz{xQPPwza6}~zbC)T zQ?K1w-(WqzvV1)sex>4e&PvEQwz3aDP;rAGW*l4Nhc8wfpvR13tNrkU6$i{KS6Cg# z*8O3{`ESfOwgC*Qj%P!8V>`jH>fANt8`~0w6$h%ZVaE1`;fJaYIzu0h?GnQ$FLH9J z`^8qq)7n_8Pou4l zr_ol&(`c*XX|%=hG}_{L8f|erjkY+RMq3?EqgQ@Bo!aVnIP>C{%o(<56P zPp7sxo*voacsjMk@pNjd-RnDIQZiBQc=g$DQLt0hyXXgORM&As*po*$&%A?4Ots$NBlyuIj`ezj zr(zPpUGHfB*i`M~n2#{C7(m-zYdX*@pAZ^zG%e+)AH$~XYW|7AeUU`blu z-zl2tZp8%p|O9kNaLg@DIx_#|z>xT6h`4mPka z4%3G32sV`T#d*k{*mPegI=6y-@hMt?g@{%}TKj@FU`7>#@7%zK?}F^fcWrh&D0z1#;sa6rA42^eRWAsX zz!Cmp8jN4ld5(2O^<$9<^XVlWMXFzBYG?4h$o=65OZ5{0{fda~3;mq8qMvPpgQhT7 zCfbIh?gJNZ8x=>*Xq!Jn&8cm078T||S=*ck`hy#`jUr+Ru$^-)whfM~!uT$0o9_em z@eSKX5xIWOqo^N8TVd>$>HqJ5{m{c3wY?&8{eM>VH)^=gT0>K9q@T49`j7un`%KJ> zyRfBscVpbyxZtSzM9lmzEi>}*`8t-3W3*!M{Xq3vvix#RaNNq`+ZnKBo_v?qjb(FI zpde(l>df}SUGrk_+=h8SlI7*Dbo7q;;M2G^nu8y(b{6#uozd_f7Jvf$?i3I5fx^2o4$l zSA+d;cKxDVzhu|{-L4#&Ea=zm`VZ{-8+QGNyzcwtH{sU)QLcsc8c6w9Kl?T?uc+0| zpIo`Ce)is&xTSvf?V707RtEL62n+~AVt@VYJ7Z$5e)hhQz;s(Y`c{=H`^@7zYOSO1 zuQ$#<4$wNYfqsHCa~=JadSjjC*PH7stUk5QV(N3vbsAEio6;}E3s zn$4v88nq!?AN6iZEu`-Cwb67_>LJO-+Gqw9+hl2Nv$|te`?j^VV)q1N*hhiZ#qt=Br5dP!jtJwiPqY@=S1+UdvijVGa&@d!wMzYE^+8^bu_|n; z4?<~WHlxp_pX-A*0{7{LT+px5Le{q(8|iJCF+o<<5B1u+q5Ed;X->Beq0{Zrtd6bI zol#$VI!>>R3hY{^7doxO`2TXK#})r{{?}IrO;l!Qt$xMNeDE{BbnBvAZ@YO;Dm9JY zT5V?egY_%kGXLu*DgE%yUq30*T8+~4Cuf%5TEF5m^KbdW@s3ds6hUE|Ibi4LdTyN!AlRc&s+H3Kz^|h|R zPwnRA28{c{pIr3k4EEF3r>1MQ`r=WkM(fmcL)ErN(w#_gjlw{d>47AdDJFSElB)?) zoF^vKjS4l8%}F-E(HbC30-{_h1%$Z`PYBoMC0Xm6wVy);Y@HEU!@$h4hIgQBw5fd! zu~KOf>cXnlHpFJ7MHp6EFyoedg}BDE?a*zrL4kwY91 zI#M`pfC$4!W`L-V2-D%mkm=AdqdLYLSLQ}gr9f5XTb%p;BjfediONwaHPwmAq}Znu zl}V|C&QvC)NS&2TN})OfUme3bmtGyiah%B7i&6ex*cg5n<_iDmMx(vD@}@AIIU!bV z4+{h*&&qPXW2{`3?*c3Hq55nDiOeK+8fg)}48&}@?1gTu$h2-A)IW~Go?yH~UDio6Y>*v_CmK=PUA-2Y+ zZw_rNWer{riIyYePzwn(O9(X82b#K-KKfV0*};#!B0ZKAx9GgY_WM5hUSw1Mt6uwq zV8_|}!IfOA7r?8ZMekS|=MG3?m9{iaT9AG$rg6-L^aGl%)mDF4(htV;cS-u8kY4#j z{Vd!GDnktOc>OG5R!clmKf4wa@2sE2NHht~9Ztmr&K+UWF<~g=hXEPal2+Ck`J1be)<&KS`R3K!2Dt^+^2xNg9oRIFw+6;ZTD0#-RkO z%R>oPlZO(lVI7AOY{vRrd!3c6&vn*WzxrHvomH#P_10Od`rPz7o3}nUv(Adu=VsNC zxjD6BZeA>?&+S}iv)dT@B{c=M$YQ1jsSBW1NeioGN{VsnIjDi^CaIAM5j&L>Q&{O!*IZghXh*F?JJgk>BSQ_cc%tFi)3%P-xB@pK?_s;)ZovNiP`u4xDNg-er8%7 zNz5)ZJKEvwL?)!i*_BL4m$O3`bXZBJE;PHEg+0rJWMTI*Az9dVAqyLCq1n;1*pP*ehpF1{p)GIU-nN`UYkn3DDSxRO z#kH>Z@lSup$y>i|uGw$GkTTipn_{-ca6}(ll<^RL&VOF!;4&ZcIe#*6Yc=7j*4Tfu z-Dc`cJ{*vD?rc{(S9%%|Ys>mex)_Pn#Ym(s=8(aW6sN{Q%SMHCF%qeZkw{%^S)_|w zIBJs)lRjoDbuv?_mo1m{GCo<7dKrn-%SfbN*5RzZtUfGGd24q_A4_w|oDausGJJUg zgzCuXHCn1>wA9Q_iDc{=Uxu#HQZJ*WRz}OfC2dnblq)r|`74v3lR4E0iBu!Y&T-2l zAn`Z;);DgQtU3)@#};fO2q$Tw57zo4*9e%bPRAa3w&;7 zfqpd5wt$4QbyUYXsw?}Y zR5(?V{gmd9%|KZlY=Ccm0@?W9+6=P!AWOfMywz^Q{Atwwo%NgUo!W2Gg>vZ3iD*2M z=t12{jmN2}-KZE~9aa3rX90t|Lx%Smh>nF&y9P7S?`6x=iNYzeastH&GvTT%}HOjLu1> z$LpjLpA*uK*T10}pli!0Zq_^s6HC_7i}ho>qz}>Vm+p>qBw`Ak`={2A^wLs)X+N&v zHi_>?qR_v3n`CkY{Znm#u5E>|8h)Ve`&;kFjzp57*(bXZRa2KTOhPSo^X`j|`&Vo) zyx4s7{iySfx4Yu*DDzbN(QbEXKmKQHfY6WVy9(!xar9ev)M~HiIwZR|zK+L=;S+Qm zr!x(?p*h=-+nfDnt2OFRwcDe9tAl&E?G~s`3skp_pWecBF;(c8FQ(RTb3oc*8s9W) z7Fesg80R`Bri(6EU9j4tHJ#ylpH*Y2Jja?2l4*Q-%`~^DS=^^-e9Np^^q{5%mJA$I zBP)1b%23yUJja?Y>C;6!Xhug4b$vHA;#(OlF0s+lsz%EyM>@pR({jc#RXc`uJ;`>J zaeWhREC18^x2)ba{q&FF!0^m(;n?n3)~HsyW%}u#kF2S{`klyXP9al5NKvBn zl!{_&Wt-1=YY!NcFl-L0XJd41{pCGm4lBm(Q#G6~OIys9G{#)XaG7h)`2l0?F^3A) z*IrhWAj?z}Su|M5&7N!(M01Uy6rh3sRC6eK*$8viWWBj5S{KJl)@m|-biCB&LIbeG zjhf2N0j6qy7t?4Jy1JulxU^UUzaW#KWoKMAaRyPPf`}JU6q@XlK!6!%o#?(Q4R{sJIe* zm?NCMAq)2`?ImQ9gp65ak%a6GmPPgkWa0j%9fd5CVBakuizH++TNc>|8tu9qQl8cp zXmmnSnxN4NNofLRw4UwSnft%BHfYF+vm7;UstK%e+5~3yWE14akG=`=<44y7`3ZAq zsEQ`Y&mQskinOg(KR>DSmFKwrKCEGPvH#DWMjPwz2tLO9CB@&-O#SQ!B*ov+Y(R>v zk1Q(uAccK=v09VV24^HFQYpTjta?RLAKxt2LRH$eS;z6Sito_E0ZDH6D!(8*9ObJ6 zKl!>gQYXcZT+*qi;2~8tI-;^fi6Fd9x9kIwPwnJmxg*$jOee&yM3A*4Tr zb95`AZSG?WABARqYh<{AAuY|-DliySF4bp#T4jC6+>(Sk=?=-S0BKywuW4yA=4TbG z$C+P~(shzs($FW}Ao&#`&Ft<8X!A=)yCeK|I+t(M_MxrsVLwP);}OQx*l@FJ8$ZV}O z1({YouMAvy9j(X#GPGnTWY(t99I|+_9ofYrT|A{7HLb1AUet7K#o$lt8S|91(;H zsH0hZ=%YD(+zx(>*LegS^P^(An8SmOI}yZ4Vit)4iMbKPOe|owi)03gJ`y5fViyv# zBVd`>jj>bg9AWYoqcub!3!~u(v52zz!rBGa8pEez1g!FQgEwUSv_Rf2;93QFd@!KHhV{izZLmvDE@G)vS95jS;q+dsurCMu5KRSJs=(O@W2R{<;{N^>C{hwQOXy#TM31&I zaTP2Q2@gq+AR!Vau12CuTbZ~9wq60FuB1^{St(pfP&)ZX$iG^R;t~S(l`u-!*BG2j z2l!Wke>IH-pH=3Hq0cK#)!yH%)$rU-vD9l!w=c{rG+*jZ4gML%M8CDr{`&4+7#Iuf zb00^Jm-?NBHU`+l{p@v0MI_JZm|SjkuYbacOs=ADg$T0%#SX?x&ljSrqHwiMJ>7(>q?xXl4by@ zSr=tpk`u6j;s)OfFJzs&JW@fsGPyN^nJH5~x5>`E{h7|b;l2IY&K|zPd2fG?AE&?h zXfa#N-8{Xg-(BkW7W>o7cP`<}5;Nd+_9)}nV!yWsf`M>}1Y-$|r9~i_n@BQRPyr;| zyN~R9Vsv46uRd3DEyh>(BWfzy@1O&SG+UhMkCCwE8Uv1H6r@B80`C;Pyr4T@geNdw zmiR-mo?(+3Qzzb#%8CgY8%<>k`~?2Z`-`GjxOr-^Kflax;v0GS9;EkbdI{v5qDVF% zg4Uj^`IrS#A?}dl%^?9`Xp?ajEj9yUP#>Zlx0R zE0v;SsS0rZ+foYBwo;IGR3Ug>rFa~yYC-AgXwh9Orq}v2Sh}ay`m-1T%^@ZvQp5hd ztawFB5Ic)rmmU=W^rd>;VZR^cknCF6t?LhV8(o61_Y8Fz!j@!yZ@|n4%+81@fRS)I zU={+VA2HZV)l&wB`+=TJBf%w23g$Me1#=UVf+?eMf?>gek%9%og2{>)7AzPkSTHP@ z1Toxk9l!Ge*31;c_#5W`JVgQMNy8K1Az!gEX7>lUtS zD_f+ltz$vDTB99?Xo@{;0lGG}#pT)n7Luz`+SbTJcg4bS-MB0g*UiZe%rrQ#2;4@A zv9Rkk*tMA`xpC=IK{<`1&<$Z{?mWuhNj6$ZkK9DoQ|WI4SqTfW47?=IF8w*r{h3o8-@oNwDnHMq0Ck~9mg`8#m+g=a%_jw zb}La^;PiT4{nIjIwZ4toU8UpMR%K{Q!`N0~@Y3kDRTsQ8Xos#HbgT~Dl-40?i!1V` zk!g!5cxgZmUHj-bv>SxLrQv65CU|Mo*%}F68f-(?ZaT(nX#_3}En5n~W9#XNvZW6^ zju{UxW9Ne3pUTJQpNXfUOX$7zAhDlEvFo7rM+HeSljp_FpdaO5UFmCcbKb930H+-#(j zn?nYqHOr)*%_{ zt&`j8O=ik%_14_9fc4hgq28L?>P=?KZS~gNq28K1)LU~~y~#|ut=^hD)LV0hdTVa0 zHxtawio|;B1Pb-mr6|-}7a^-RFDbXxTXTncYwl2Q&29DOCFQnyYwl2Q%^m8kxvk#3 zq}*0-%^m8kxkJ4*H-9nCc?tW`AJ@j_yPmjFIjhtNcYACX3b%S}&X4?@3AcJ|nbgBJ zs*=GMZt&Q=8ToZF+~Bb-Cfwbz!87s;;mEInc5aS>qz&}cj^#=tjMhVQNh|2t)2seR zzP_hbTRL63KCQ(Zow{G96_#VJAq)Tby2+{Ys{avo!PK6w`X7iY{8SXL?p6Oon&DOd z<5mBI-m326ulgVVjrbq`4*nPa<-74J4@L4&bCvfof*VbTaP>wkjI?Vzclhs0{ChkAesE{} zums($@No!ySc1bQB=KPh4w{g}hb1^dHr>G}FOjvSNg zS1&kjzJNC3zq;J1mJe5G6NK+su>OH&!&`VP zWCr)MhPaQ9n^}GRMqn|gUw-J%FYE*ckGah7XBI#5-3Z+7-kCoDiBvKjx^`x!b;Q2Sf^T~^Du0JNIlnD;6?&!=O_A%>fsa?%%c&***h9q%{T{6U=F;U z_4=>wzIxU{ecX$cUg03`FJ@hY=j?W4_TbSqOddS7hP%LEV5%(QK{PUO%NGnhoVbX` z&&a_2UF}wFL_S}P=M&{$R-&#%`5@C($&KH}SuRmQpRP}%A-~Jii0i7ZO}kWeLmt`J z;)h3Faq`fxaac=Ti^huM_zuNcIqxvrwH%uwTF#aW2=}@%XeZkxPQjIv&fM5PE7usG z);7{?qCd*%)R5oYAH@{ds2qGUDJnO8Y@wAHZqhZzA2(@IG2E}&;C_)9T*bv|5qol*->z`q^t!20 z`{%t_ffg~?XvNlNa!X&GMBrn*>IEHVBJ#T9kXH+UW^ev~552iqz{=tP;MW>@69q6y@c$QhU(G{5vj%yc2YCG~L#37q{hAUw)iL zMo(4E{4{K73=;n28);7@kp^!pMM^rXNbSLivZnv{+ml0LgdbIQw!ZWoz&qX zWC#7TL(dsBuwDxd2rfMldpakyBe;y@^qhiN8hhdw;bQ1fftqvoXHZOF(6GBXm}DhT zF6^ZXgzueEx+dny%ONMbr|@Zk9by~au$3lrWx}7bxd1k!C^b{q(r{qYsj}J-&AD-+ z5EEIbmidOvB6497o6}j;m$y|<7E`D2*faFfd(-+43%r=3#)+xLR5FTwo7y0#U{uza z%uJ(}zr&hD`YswEEhA0R=abd7lSTU!p0b7kNyiY;L2RA8#Mn`m)8-U1XZ^;^G@u<; zKJ^XZ%y2yF6Om!%)TbiD%Bjy+(uKiV)2uC`RlkYzrl-r+%hrQGI3sne-8{84(>{&Q z-2K}>!B^Jw3u&#j+0ONi)^fdtSFV=d+8)#~y)+8 zXV69%T4*Eb?baGzeb-64#Wu5Nc5izxUZJ;Y*fXwSks)7<2S2X_`C>cxc^$|X)4|WG zu>9y`32Qp)CQ7iSY@!5P&L&D&lL6S#%})EGBev=<-geQQ&g|^yMrYQ^`(x)%;wyYD zjEGZsi>!W*-Ff6*OvHzgV5MV%HH`^YPZJ&MpTC1ChPh$!5gsvSW;|QWZ1!X^U(lj{ zzMw@ZU(lkMFKAI=zth3E>SD;P^}ATP@n!`U@_w%kP6x@g{xlvN28pG-3(>I8Pws2T z4;KZmT57A-u!}JAC$DD%uhu0G?^%I2ZDS6DiOd;oMBDf8Ks~m$@1K^w(EINVj#Z~e zCrGd`Um}8q+8Ekm!9r~q9ZotSHr8+B3cCgySUbVS6nJcG)oc|1NLdkW^JZ-p zYY;X|^OHAh6I&0pVf1%2)aKD&rc&EuEX%hvbeGi3r!mgil(bK1JZ?`Lg~kK-%uPrS z?;2p%@SJO!(?So!W;ii8pK$ucdBiz^S<~gw7iW!}n%QiSEf})~JUo4m88Q>bWS2ZR zTj0%xF{y7=&86WY{_?ByM)&ep=M9GCtMjIM-uz#=-@^NgoaZ{*d4Dmj)jZEhD}|f^ z{0Em8H|4Uthg@Eq(d2pcj0R^SjBezX6p6tb)0qg?H+Lp-3TGnw;+Y6nif|hTx1(5W zNaA)BZ4OD?j$*;?u;f?OzmT&L%^Yr=FlV5d&5loCOCKLp!r4R(hrfu$zrK4O_O_1R zB~GCH=$`|N415Pz{yrEP7Az@4bk%EzaBXu9KgT~+Bjxm3^>a^z#NZFm7QNO{v=NKC z9^Q63arr{7oD^Z`)h{7|qq+ z!H1@ZUwpGck4}#Mj_O#L(6LeGqbQ%}NN>XxVVB(}T0*;=k^qOU+5W8}wa0Xv3gHAic zMW57g)*AH8*9H&JzIto$ZS2U6nn#9OI9^g<$C|J+3ImLN{}jr&HI{Jzwn`7k0mo`< z)EImmMM=9jyG@t=IVE(57Qr#R+Qy$-V!w?LRkLc5$;4>Q3g?;Cd#!BE+-vFI-8zQY z&q#bSOjI2wOUa%poyKi9>O0nG6HIa%z6Yn+Mk38ip%u!7$WNBkppw_h7XLCnWuM{ zLdiTWAcD7o%-}x`z!DRKsKhokDrPRRBV^`LLNrkg(9FEw^q0^|IH-8p_nSI=k5iUu zd5@D6Vs-P-L7^wP*y8<6L|tqM8QFXX6W_bh*1$O$K8dGN&_iP@uqi-mBK|$ir#W>< zaIOpSOdviH2#$FXeQO|O!r_lgemfcX>#dD}tlGR)Eo)SBog;#h#leS&;rfE@M*cOf zpB@wlSVI}ofZtR8|PI|Ax zJ_Myth}d_ZFmhR(eZ?tyH_*$mLw||?qOUWiA3HNUWfO|^9`vKog~R8}@8Rd}dM*9a z7s>CTQoTDzzlU9|_vhAdph9!?4jsNGYi%EAK-!H2;>&dV~( ztq^z-Ss^GgD`eI@Bf48U2b!|JdjE)D;GloRr%^WFDpq3@$QpMri)jY0G@x@T&4a1z zZ#t=|L|_uDrDW0V(G-SFONu&0Iu!#MjX!>!?Wquq<`fil2Kx!G$H`K1rq%AKb@WRhtiegLw!EBvExwMqChf<+&dwI)6Jal;5u>(hWz!mX<_%ulxB#rQDwu;dYt^Q4W(gx- zwja3--viMK$biwWf>_(~V<6&iasbE&LjHgD-UL3XBI_Hjdwbuz6E=ZBv#$x=NeBtD zBoLNJ5&{XEqNI~_AdsX(rvm{+LRb_91lbf3Ba0#eD&PQuf`|+vJ18zFh$xGQh`69A z-#Mr1b{Y_enfIM<=J`Eu;GU}gsZ&*_)_ZE{ZnQqJ$uI=XPplLkkG?AegGm;?F(fF8 z-y5PN2wxte$ONOID6biu0H}MS2WL+*OJJw+P-kw^F2MxoT{K$smw(l!z3Z=RTFhS9w5S4j z>xinWYW+8*KcNurIPso`6ph{L!AQpLs!-|Rm_T8rqWQ=To@v4Wq`%O3XzOBbXzNnV zgye}~m>h#_@p*|RfuF}DAZvV4<&?vrLJ{Wepd@$_Re3o!!$%5v(2``G0m+Pa* zal0Dxpe+opGI_b&4HXZ~fs$M&(KcKO(OGYh7Vix%E#4hmTD(7QkiM~*LM!xMt_j$O zrSP@n+LqM!<75IVj&4Xvyuo?C;x*3m4SAQVS#xOd8*OrI1+>YrjOb#Ofo)EMCc5QA zkT<_W+O z$P531>w=r|0=p0^>7UMo+t(^q25IL6Z719xJx(Riw#1TDuM?;xC@WkiP?ZzKbpq8b zQCKJNQt%70aIgM`Wdq!Q*TCWd?_f~{LEgCbf&5u+PzT&g4b?%Ekl)H30_%s6%t4iq z%s~~bMb?d(M3hkMHOLx zRt!oU3vYoweW3h24%*gO+rqX+FWT1V3fr1kJYlr0F#};+qZe&!bcJnAES@{s)~JQB ztRBf_ZU6=TG)E?|6Sz*<%ux>_}3G+t%nDW8q4$*B_P&a(v1i$fuze4_l>jLGSCQ8Be;iXVsY5cPY;tPO6%XBJO zChUR1GVvx=%EX(JuXU912%Um#G9FE=DtI(y$-|@ZC65vfH@k5)GRW%<+&mJPqZA#Qr||GNQjph*Jbwqw=RR~g*wA^*-dqWw@m+Q`T`D!8~Xxw?_giR-W^=C zqO8&}Q0k_RL9$}aN}{5ZP=aF3iZa1ye0hsgGw(RKVEq(do9My!HhDfnPd8kRsz|J* zV92o1jw4LP85rlJ5{F*Cu#!E64A>6Gr7Vrc@%Tvs%n??vs3WXiQ9W3_qGqj^h?Oo6 z4-sQ(P>gJb#JeV!8U|NsHxEp>c&(QvI=}>Zpn_ z%3trwKCFg~;l+o2u4)x<4U7oa!03i5gkh*2hEZdMsE1*gBZi?Hsw{?~>KKMD?_}I= z`!gMIeSA9|Fzj|ZVA$<+z_43&*ux7c7TTDu@M1E;i?R6fn>wx%1&v)^4PyCCQ8<^P zpqH2Qd}swj%VR#g6aX+9S6lQ6uBUiu-4GR4;?+?BR7VAXdGe@3{v_8Mdq-$gVZHLG z!i2>I`vDjyd_cp39f26$H)sTF^lFU&RBHsFTBG~8Mrfx;L7y|i`GbT356&2%( zaVH>0!@#&=>TZlRd6=;haA$;rKQrJjC>~yl64$^ssZs%NKqgxZrimSRO?nMT!8Q77 zz#GB>0xRkziuW%cz)S7{emZL9%QpOHPPJr10= zw5cX7i_sw+PE@5w{|fTIMf3xbxlHt99js|sBKcG7YNL_mTaH_e@Z`^V@SryQ=rtk z5j`QJ%tfN{68Z-c9YdUXM8{C9yNG^lLYeP~_MtS}5zPZ?Ws4wpthMG?p-{sTtB~xh zqv{=7QV_XSYGXC(NJwUSkhilsP}lcEtJEO$oMoCd2@tlho!zUQMqy5{*6i#mgn1yW z5iKen|l`yOidxOw=8Bu?Bf+G#0TvkUy$s8jhFKbDtisBW( zZ!=<8bBZ^LJw)hbLdEPA3Cp+9_O3pO`Po;J3D7JHV;)w@&JfCizT$zs299zGl>-`B z(LwdA#=*u|(hU77CTRK@R4krdW-7LvXoZCS`Z95d9whn)QJV_+wTU()DpRcfMAa1c zIMI$I{}#~>EDLg3Ms%Wt{(3TTh#nyNJ5j3&`L&2PASzL;eneFi_fw(?B>yJS`fL!y zdX#99gnomJbP>^AM6VFlsE{AQ?gcuXXt9KTqm1+!qJJm)BT=o2LfQQgI)-STgnlL? zHL-nA8)J!jCG<-&(r}gyp%aPLV7cJ0AR5Jfg^6Mj(J>PG!(^n*SU$+i0V*-sdXc%= z3CBL5+sy}o{#}DK(RL8#gfxh&W!H&5K-3QDXyMEjX&vyp*~IVy!;O;1NTxmHg}Vhv zd91U)d0i&DT|$3XRtEGG(O0E1LxvLuth9htT61934;E;h zEeGc09D&vXQn5mTVl3kgYE~{#A7c*WQz=lRupHR8ogq+t2-C9#h}ax`j-|q2V6Oqv zL%aQ9n+j+Hh0SH3>1Q(oyCP6q`*i3h^>E^6a~U9mg{1}269yZ5G>8_!?~{GNk-mj_ ziJ=xdCD0KgqVEKHNss87Kn67;{@Vj{_3vwz0;<^<^P5)31#^2X=0pVblHzy~!a4~Q z?RXhbmOw}BuK+3$=o|ZbK#vMkX5R>?N}!qcCQ>c7NucHSEf984psn_8fX)h3*YOS@ zbrYVu?D#vN#)yKN-Kb}43R|Fm*MT{>1=?utq^iZ@1zM~@)RoX&eXI>pZ$fj}0gAV> zsggq@2pf+k4dwT~p*EWmL@lH`tgs`7O@>+uQ`KeVK~yf)V^S9kn*?E_RT0caXc~LO z{Jx<9s~S0@z)fvH-{}tnYC>olpodsf7E9=B={x;axfwf3Xo3D=QwvoKmH{RiV+-`10kvX# zX_>S@zb~wXstxP?I1k$w=F>#7z4H}Rp=rl5syHe)wotj*duutGV(hDlVIK(;r*5H& zW%FL)VV{{>sNz`0s~nvN6wl1B0g@KzUv%`J<>TcFVpl*OVvv!C;_% zny##K5Iv_!WPO5YjV6f=38F2UZftlEy{GBU%7Un|CYenRqGOsKY)%llG(FjKL3CQ( zi>(PFi>5c*ib$FZtHNZwj$*n4bDv#wwbJWppQ021?u^fFI zW>Ae_>JA)jP#aVuSylo^!}SJrA-mL(qx%TW=)_TgP{S^O*ql0@t;Y<7Y%rk(EXnvO zpyNSw$>3wzT~QLlG)6x=9Yl4FWo$&E64uUG&MpK|vhhJylB9$UF+R+$2=riBv2ha1 z0LvcJd@!uSIGMc~L{A#0GJAI=Y`O6fRv1KoGfroFgJ`$$an?3jk^ICslg$w50nG*D z6Kr=7T{X^T`W{?T(r8U{SaJ}Bo1SD-1nMd|O>^0Hft*sLX&$>K&;+@oX+DeZ$y0ei z?qyoQ0*GLy&9G;g7P84fG|IGyJsCumrf1n=fu`D)n5x){AlhJB%GL+bF4J^fE!wo+>uvddILOH!=jb2uqCE*>~4WBIwH*9 zuw;R*IxOaIS*k!gR7*@3*#LnO?MqCT*aHHcfK)EC;X%~Se1(++QIh#5Hcp^7)Jsgi zuu6eyYAxnp*<%7FK-h0=u0SWvOH9AB#R9DYU9Pj`0-3B!OiWrM&}GLGlPql!sJA}T ztd`ypsG~l|tdZUq=$Jg(td))k^tD`J)=8fV!mLRN|%8T5YDz8pP?~_OmReG|K>O5IOC4!<5Y@EQmD;9q$$e^_ zB|@4KL=7wrq-#Oc!s3)t(-g@_OC#x3frf=yElnhIIu9EbR@2f9?DkGHcOtA z=;3IedYfgqq|Q;$-z_7hvq7}UQY>xFRl*KgeA4zj1$|-}Elu$%=%mFjjmYOHMfHg# zAjJ~V<*MZoX-Wx4FR3nBW=g4}Ia&*0bEKwzj_h`|b)ke; z^Rb_`R;#Uxq^1Fm1{-bGXQfSL9Gx(1vn-L03N$jTmi2il5sHEF9xyeuE|W%-BjSC2 zxiotm533v2+`3$9I)S6Bns(L~q^Blv6lUyVT_t5t;Yg+JWnC>LPUYx;Io-NOaz4UQ zO$d8cvOmhv4%J}mYf|=fjuP#It?Q*%ALHmm*kJ4HQq?R4d8`|yswW7+=;&qLEX|(H z(Zi;});FY+b2#b@XshI!%h5ha!(ucGLqECg>SchCT$R?8=wjrQL1)LRw9Tm-dvj6OmX~ zeJPn%aD=7(Qff^INB@57mr@TxeDr@QP2h;i{-v}yh$dRkNP9VA%?<4>=cL*%V4Bm| z7b-*|MW|iA+;9=!PmCY{qc%7rT@EW!-d6Gcg0M!s-*tYd; zwdCy-#@n{G{EN^?M!pnh3-E?vi03Q@i6D{VusaA-+bhE6+eAO`{%CU;b1e>>>5#8k;a|0eec_ z!d71{6zGtug{^_SL7?aK?QBlD&Sox|V~?{nlIIEZuDPqNi7dat!w#75u{D?D1qw4} z*;>i7gXn%+8~JO2+=eV$q}*f+kLNbrZ)+!K3lwI|x4C7*RvxxP6=#c)!vso%+}q3b z1UeBGXX_w04I-Z{L5>Wfv9`PAIDy_!$Jsi|U4zJH>nisasHV1^ElJKmM7uE)ZQbO1 zgJ_DayF8L4agXIOTMs$F!vM{;^_0IRgneS6t+%XwlWTp^(ZZG@Hxa0pG0xUU&Jm~* zv`&+sSCF-xt*`u+Kvx~@Y#H*W9D$7zXX__l6R0zwOgZ8$$^mv&;%o!tE;!`?OTu#J{~5$J$-4in`=0-XrkY?~y15=7^0ljSdi=zH5#`GP=is5jdlk$()L zbFgFghd?#8>uit9+P_17qVLXt%}fPdwat{92NAPBA$LXuHHba=Nx63r&4xXmcS#a^ zvd%tV{(-_4u#1jWwgs|tH>SCO^)ha@JtaSi2?45@;W!vQ*w3MCWYFjLGd5FHd~Dxq%# zdXA9xeV$5JLQM(re*KypKqUJ0Yw`>chW&b-yo3<%*X!ifgm}MRFOS%Z@p!*}T|O!h z_UqT>*nJp={kpFGb$OFOhg5a#8|9Y!dDwIM#`ewfCV}2Hx3a$>PdUKD4wz%@Z_1Yh z0;|%#U7m4}hlLq?*>}j!#Uw&Mm6JY`SL3v&fO|T!9R|L^i`%(FC0==OQ*gurF19x6~TW5E86d{UrFDABia&PQCb(%RVmojhNltB%I@OY&}xpw9>F-^;3x zNfP$N1NI-}E&}a?RDP7l1-^vLM4fX%EBoF=9XlO3~tp72pH;e@*z*HN5t!HTZcP<$k>rVV@)X<;U*f1Hi zszvSi|0icG^=F>%|1JMN+p@Q|%bjrUq;CJ8%wLcCe|P=d`KY;b$ve^cuT#5|P%iVY zQMm38BialzKmRlj++6~{hK&S1+!~`d!ao70wWNqsi!4!IPo2uBZ zn_3p?_LlZVj{2Wy+{dq`-n=KhQDhE=hKCK%337<7T`>zh48h7L|_ARMnx%+!d-V&nuMk z&-(w*Q@CA@p|!_nxm&IG+r{NtJqY7PX4nT{Z9=uw7kapgO{3bbj;quRA6dLsL;buL zaek;Db5TZ0^;o{MHN{`c+i0ZoQgB+`eaFP4$kee@ZWCy{`a@|ZW@WRBm>wd z2KY856MU}247Q?$g#oPv_F`RliojxQ08bHfzz=>nz%?+JRRSO0>%9x8k+lM9hx_43 z6Nn}eO(EKk=n$eFq6I`p1Fgx%0j%66%x6@J4Vd#BCvsBhDnCTHw2^<-mW$+(McToVxJF z=JI$K7iBOm-n~tw`<0C(JOyq=)J-&jXcEyBqWy>tA?hJoK=ga|wPquvgEw-|Q7N95 zo>%XYpO$J{4+AGz{h|D^2u)TWmnYG^-c-7+iF$^qQW@UWOl5dS6FH55;;r3OhW9j6 z8QybFWq7N1gD5ZFxJ_kvw{|PYk5=s@x|irtqQ{AzCVGMB2BKGpUL%TmjfQmaPH8H` zyQEkrm@?jYO=Wn?HI!kL5C_W`M)eb>x>9ShFn!G~wd79`oq8o^U45fzm z)-lcL@@Z;!wS+f}uP~&iiEbczji_3}mbyaib(-ikq8o^+CA_PAg>EdLCc1&>HKJ;0 z&AuA7g!huc5B*Io;XP!vg!hlt65c6SOW5nw681)Qs{o33#nlqt5r>jO-%v}~ zThtQX{#HxaKe0q}z(3XT9MLsIw-9}g=rN)$qNlNLp|(A6vt6gf`N5*ak!xojDIV*ksrn{}Skuuyah79t$%_ zNSjEHvlqi!k-vcG6zM_O8=p@8?P`=cNwh+P{wkvIiAeBQ=!ipfJJCcva`LoGiLH-KzSCPMp{M(71B+4w5iv?3~l0T9BiR8~Fe>V9m$X`MJDx%wo zo+Qewl#Z3sA%7y#Y~o~-zk+BLajM9_o#;v8oFu=q7L|o)1<~z9StO-Tw1Q|A(d|S} z5{1Pq))>)5qS-_%h*lBZPV^*E)(+(pV~|!5-A?o*Q5H+75ltkTO|*h&718ZPPZDMA zNuFpT(QKksL{BDQDC~2bdXd=;Uq7_7|h;Ao(k|^s$@F|CQc7l z&X%yH>;<+8zP)Q5`x|_g^ewi7eZ+oY?WBp)Tha*m8TlRglw3#EL$y+MP<2&hRku@j zQukD6sP9$hsf*R+>Pq!v>L=BU)JxT?)a%r5sNYuaRv%D*sQygdMbk_3mFB$Wd(E$! z-!-zfmbS6ht&P)m(e}`$Yah@SYW>;?+Q+rCwTrbcYPV~@(K>W(bji9tx_n)cu1q&s zH(R$@_kwPtZjbJO?gQQDy03KK=zh}urqk#x`r7&i`bd4WzO%lk9{ZC4+7qo@6SSEb zdWIGHf(<@nYX?i#0d_8fPb9wtCyH&%Yk?j!B3+|LYEdISpjij>W5-6ITg+R4R%wvN z+mK#2>;(FQY7fvc;roFG!jAymVmwBi;~|_ci1T$d$NUZWt29XSRY<23-D18(e5Cm* zq|=EmBf7=>BZVT(S0SBFbQ#g^K=ISXD(G1@=+!cmQwP)m^&rDoFaZsRnvhu|2$#ve zm*H&|4*sT4D>8f*zc$b%P&+cTdp)3A;FGH|+sYb3ZN3RqhEEeW0(uhS$?OaG9H|7K zhHM7@mQo9#t)x~!?~&R7?IT43O_kaKO_SU}ACh8#PLSFIeOT%MbfT01v_iTY=qplZ zpsz|@fxads0bM6`2fAMB0d#}Z3%=*i4WAtD3ZH&XgWp5C5ANZeVL!5DIZe)xGv$FY z+>Mfl$vJS_Xn<;zs$BK3YKrPH)oj%Q)ne6BRXvSGr>@{L4bCq(-we?op#5&}ioXo~ zOq_6NlvMMQa8kL6$3Op#bCmLzp`V8n4*g;3-@+sm4z*tcdS6W%YjvOUyKs95x0i5J zgxg2BX~OL*+4WDkrG544^K#)t=2%pMpe9#$Wo2zVO6(-0mfJdNOK3{Mky zn!?izp62khfTtxqt>9@5PaAmJ!V?J({gvj73wVdQU97C2I1m#(jCR7;xc9iv<@Rkr($s zUfctDxs|*iA)Z$-MV8WIbeSjM0Zp>qY@jzc;PZoLjHj^7>t-X|3`4#C;sRf>o0UKS zNw^gif#-t~x=~Y5!UJEKQ4R{ZqZN&#LE~u97+iSLV!(x`yRUeR*B{984M@T2VM(Pt zX90u3H->VQ77J;>BTCCXP)NvYQoVxU~$!jl#QE<9VY`GHR zZcn8E+4e%K_BUkYjtfFa8IVXhPDlqC9Rx#h;{{G&ozi@HWrf}@@KvXf`-q+_BZX!5 zhnK=|Z(!Jf;)1{+*4^)g?$_TJ@C2X-4rYE&UV*2$bZ}5)@J%8^6pC0=lN4M3Zg2K=6aVsBozg2KWaALJ#1s&T&05BcY@ zVz0-aQRpf5Dq6Grn;E^lffPs)i^NKOWqxpYxswaV6y$jsg!lH8j_B?KKi2?*y{w!& zGP*K3%CW zR)W zk}n14I^d*xheMyhsu@|P_;P_$jND{jpu5lK&nqC5R9fmS$|)R|<_&oAV0KOlz{HwU z26FclK*Qk|6O|U^R&#^C0i~Yd-XMZ3%b?d3D*BhELIsxHAd&3NDH}c_9)XkTP!4f$1;EEseqn0R|lAs&uGK`id-;4l$coXD$ ztJ!GsWS5VmIeCe_lG$;B$1TjJa74*1t^iKljDPpCKi7| zDKr62U|BvUUQReQgQ_@%@>ex6JTxox$Ev3uf)ffGkEDB{r>KMld?hf3{3R?CY?=~Q zRuW>S^z|bE1q#bbVO{|!i~yKY(Twmj{xS$cu3@*bf0ft}k4EFh19*#+HvAuZ%^z!@4 zN;17A@Zx|47mLDW7g%ZJMCFo`OZ^pE3T--G1e_|N)85GAasx_)$QTfSw32d4l}c2m zFa;+Uc!n4IK;7KZkO>9e)xhxvV~N*P6n~3){h40>m>a^CreQtHmBuNJy4|dq*+0r3 zjKFOU92sCI$0^mE>hq0C3SjR8vk!U*H&Xdn6eC5buFQX|FEuzu;j@^hFca1mxdA3- zKYURN`vu?2eEmGAATR=IQkVkB2a_=-`c^hyKiaE zPo8fqD}*QA#uPbu~)D5aFYipO~2 zomBv>F^*a%1&pLX5R?YtFtna1U_9)`Y1+bG9_xzVcsU$?eT=(ha4W{kidlg5g>Sn= znh)Qy=>g7g;NuBOF1YaeV+HW5yv4A|tiUf_q- zD#Z4JFN=+!l#>CKQi{bCCQ@#vq?`_E6vDroHB|WhA$~q%trYnzxQSB&ymZJNdK1Jh zfqy>85%bN1ubRc&JcLopJm8kY1{3Vya};DE}WxOzLo_MdU?}p&~0qbF)~&Hy2H*0;On56=2aYooKjCfK?e6#5|o2 z!J_jjSE?vp$SGBn5X3wkxSVT#Hyy;cn1I;V9`Tn#YO~y4g+5 z(h4=iKIMmA?tvz#?i$JDSMq06!-GS@hXli&@Y`A#k83oD{7PLiQ$claWG{?4-uwPG zEmLRg-#2^K=ewR_YNsUWRZb>pz~gWrv?7r;PFb>Ai95hpGps1Zm2Gc9@@ZMoy( zPAqrgxzmX|iQGwsQ$@2Gh{XcuYZjo8cvwG`j>Dihh3xZVOPVWgGURG0UkX(CU}hSnBlSL;p|BdT1pY&Oy67A;7+4~9Hb73 zL)wruqznl|x{xfSs)Yn?lD>1`md)!QJ7L2rXtdc6%In)Eh^ zYt-8yx>;|tplTIUbe$qFeuPFJfhk0&^%0mxgiarUsYGb?5tvSdK_7uBMdI zAAzYw81)gDUW8d6fhk5<^gKOEj8dXxC=E)0VpCL#hmqt64Kym$jvS$uBXn|vR*o>p z5dckcgi($#%Mli*4&wY(g&3TY%$p7lV4;D+S#4cSyvejq-k{g(O?so=thYdC zg`;W~HV*30Y7HB$)v3bDta|J-75lS9+SluJpf3zjav?2pAtiF*=XJ@2RLF%i$Th=|)~T=o$+2)pFby0Txnt5>7`3ID zw^3cD;+|Wn5VY_Rnn@bKDJR7i-9#WG7ZJUr0n_pB0$1Qfx8dP->{Oxo03#HJ!?~$o zC~_hLYIVGNK~|$ z|FT)5lfiFbH5X2wZM1#GcW1xP8=7jK`}WIEx4b{6?J95Eh+jYK9Jt>X`PKIiKk$le z=Yr17>pvFO-CM_5w0&-D+P#P8sz0@*B&PNRBOOis(vU?(DO~Hx1alv4U|f7efq}-C zFn+L%bAcZPKho$0AFOJ@aO3j*!Mq6TA#1I&RxLvXYPGV~AZtxB{)C(_^SeCX7N04qxL0}p%!J^VTe-0_14zp(3X?-U zG4%?QLnASb3e!x`!l{GLb~L%sET$720yK9S1cw04Unaq!Nswkct>6%#iCHf=1ZZ+L z3J%TsG^1P0A@2dWvP_jj!3F_H%oqwx0#LeU0Z26kP-aTfq^||;N@9&u(mWzT!RDDD zhig^OE|GWxdQsd&?c6B3ksDf8%ETPXxuHI|c9fZr;gy3Nqa9MGw~vy%%`Q=;DA)l4 ziXUS%V94PEfsfw#ZsZ7<7s<|3ck*Xn8Nj0Qe zZh(^x3_vH7)lLTUB#aeDCxcT9YZLs_GI&EeI>92u(H7okaCIFVM<*}}kqz<~ZU)N~ zsG}1k12QrIyQ8fEh4G(Aq%DsG3=-$jFqyWHDY&SJ3zbMDB@)A(cA*3+!v83wE!?Vy zR}_C&CR!Q1V-*1J98d_L4l;K^90Q7i>qx}hNe)$Zk;*P$qb|S(wYi`fepH5HKqMn3 z!jtC7#w&@$avV#Ab=koffM2C@fG5%JhzH8$T#k4y=fb*h;XkY%?&BGgBE+FeaOs?C zDzp}sL7)|tHyQPat=1#ff%yU_77PjDiHGFOz(^J@mWxCv*;uSw(k0%3l8$&t8>QV;J#@bm)@ z@PuitX$cD-J+Nd5gF)UBJT0No5V_Eoh`x9v#3Pujml$4(XRHAlBUy5-L2xB0-B%nu z;maBUTf3za$f5B9FItIdyv335qg41U618u0_`+CS34ULqAQw(6eE9)qcb^|FA@Q?T z)=*+~gF!piI-}BiWI21nbq4QPpMMl%u@Y;y<0WTMBs6xE(+S56PTFlRb;5ZD91(f* zqM)fHW{!=Di;8aF-klKTg1hheaFa8XJKB{C z7v-1+D~{EJ;$k_1#ZWGEK$X>$m`NOE;iVUKmLG0N5I4i`&G-6KigSGBf~$tKFiH4> zD!)Eacut}VA5vs$I_F0)6WU|{p6}=z7v}&jyzTjAf3FA5H`_XkN^{}PS3yo&r?@23 z8Gn)t{_=G06X2!2q zDMwIn9|Zdgj3N5VNJ_^4msf3AT$C5~#vd_%ziKufgxcf3L)IPKDtPegs5J&3Y<)zI6^Q%~~o^{?YFFQy?tWp`#P$SWl_bR~B&k z@|`(wMSUB@-sarKZSJ`lsbp=i!06m+*|?Tb%xxFaMEFm z83k@*6r)Qo~HR%ToYnLV3;rTuQ@?ihTiR zY4Cm_C=Y*@){_UndH($Iq^gubgANo{HfZbq{oW5pet2NKR5IeSqaiZwNn=W72l@r?(b=dH@4}KvJ zKY>rP6w||(-{{-Qu<%OG?6Ld)fnCFX?>6<(m&c`j*3XP%tw+b9NkfO>>@&2z%Qdug zC=3*De)&+ikvA01zlXw^QQyocpxrYDz_oxvucy>I^fpu9&|)}`g4{tjhfL!4rd>?@=>lgJcG00^CZfg26%%Sr?7#rOdbZb2P~m8;ViB%ER=_V zn+~5h=?meEy{Y~Veq{%KUlJxn6?-L@m_Ya^tN1ioUHd#V85{{x^}y1)CoH(}1Q1Wu z@?o)!e@$s}&4N%ot}3NttKi8YNxZ7A0lLEX8^Hn{m+W}Xcxy_RaFq0PEG#>9XsL{W3X;;Qvc%tFlsy&>1 zC4k?>_~+{e!>2eTY8ig=is!6_Atn6h>MIHkChG2qLAka!4*g9l^cS*r`& zXpn=?5`y6_L2JTgCI~MA=|a%g3HsgGd$Fu;cu+$e*Z(X365;y?q2T5GBd-4|tKffg zp)2r3E6dDP*|kJ#Xg#g>w4W`KPOhr#>H*gMvLv}pE`wIn#;TI*YM3ikYiy&H;5#Tf z$dbCMi>s5Xb_mDjGN>e0rCusmFju3Hc_d5-J&wryqM#fPld_9vOj=KfZgx+HD=>=PBuuRb^-|L4U^o6KtW>F5E= zUpkU|a9*=@Z7z4-diR)9a^3IN4DEg9wWps;s1ft_6W!C!9z0Z;J3zhS;?bEi|2Fi^ zc`xr9|4Q#Otq-*+`Q*_`!=T3J->ZF8(|pUNH-4zsv%_4CYt7d)$JnO*HtG${(~_#v zw!BK4kT&t@lGpQI`^eToduq(0la3!Q&ncfK#m=6WF=dzxJz82;DH)(fG_DA!(g>@% zmbym%&xh;Z8@|VVPHs`SVECfXU#z!o5A~slCh9t_S`{^##QySe|DGkrZxeqT^V|A1 zufEfMz0H+{@f)hsTzyvi2ahfCG^TD5OEFG>S0uBG&)IAr@HQO^;WP;p4LfZFm~+NKg$3v8s9$UfGZsJ zZKgK6j7pL!eQ0-q0SVnjVue-LhaMca<=C0E+LK!%a@?bSdS>{_i^dV1n>|~Rtna<| zrGu%bPP`l!KKAnSRgSv#e|<0^G3n*C$MpA2h}io6w|Bib`yFdx&Fw9pO`Ns9^pRfa z8O~XA?w|Jk237QurboMK7dLNNnQ}7r{Na-yYT%8%BH*9y!Xl3lHXT7SoTI_YKxDz44rjm!@SF{#hzWe z?1%P~PH!u=j>`70IQiLo+BZL5Fd%!>=n*XzElbVOTs;(6Kj8{YW8cCw_CfVDCM7O- z>0-&iKlZ}K6Ie$i-c)O@asQUdqKT^!AN1Axh_HQ^=XGWl3@?U@&><69ygNSH<%Y=& zC$bK1w<}se*QCk+7Ts=|$i$4Sy3LII4=1Ki`#gS5HFDVQdiNVO38z1>K6!BG7muG^ zZqeK|czdT~tv;K+aYS*S=N{g==*_HY2`_yg-@ew@5vzY&JL_1&fhCklVLXVHL# zy>~a6zJ5rH*f;09do8x@Pi!CE;g54a^j%(e`TB8NE1v1v^r@YPd>>3a(|zXY5wR!x84RKl?4Nl(@NeDl{mrhz7Bh4%r{dP)@W>eKKy5o zGBLr6TDt$w2C6D#wp#qv*`mrpYdbXk{QLti?Ho2cV*kevy87ebcBo-0THedm!+lfx z#JZxfD`~>pL`NsYyJFhpcZhGFkt)FtJdb!MaG7%ftYDSbzc|EfmJXEPV4bc&4AFEp)140H_R0u z8RL$GKI@`6@Lpwtf;lkV1+$=nVGitaXLI0f(hl4-bZNpHb$Z~J$HF6=iC2rxeV+d5 z{S9^%HedGhSB47n^+8{3IQsF`p}oJ*PTa9PYtw@9KhAt_a=3Z)wqLGoiP~GU^anO7 zz1gZOJB|K%{hu3~)@p7`y}Q=OCyE0v?>w7c^R=fn$?0`dQrfN_cX8X)zEg^OefQQ! zhaXQVu(q1~54A1or`~bF0AwTA!T{reX?xol;|*79+@{*dLiMd^%s}6 zOetL5G`eM%m5=AQ{Z0O8a=Ru^&iQ$e_xkb=&h^vJ`{~2qw|}tR+2i-_DSgLX%)4u1 zcKWHEdot4-{&w#i%YFNrPJXEL?0enDh7EH!fA7`(nU8t0e%>+D|Md6o{w?C+RkNq4 zJ1!izCfil1*$NZhaz5c1Ju%I33z#wYO_k*uMi!dU@MQDpb1%2elkTdeg14LdE;JlN zn1@IN`x{v+FJoqx#CyIgtOA{J#ko!y=ulUdlM-iN-u?|*-O)E^6L*-xJ67?@ml zW4o&83)es2(Jj5n2Y&Wx`$5L(d)7Kru3Q?iI<3#l6>pB~Gy0icx=(&@cH-HxM-Qwj zO`dpc(x*SXc{y(RdqaC1e`QVQlPyOqtoz~$f9b&QYtK9Vd;59*st?BuYcRIQCV{PBK&ls>wv$N zy=CLScS!GC72SFEzUSk$Q-`JxtZdm@6TPv|vA(%y4oBvE-=p)H)q3_*&*zsMx^G7F z%(LTH-E+C;fexMGmuwh2bVcnYGv9YSF|gCys|~|cN0ce-0hq$>b=h!c2$!VmYK;rN zsPKBo^!2AR37W+bHnkd74%1v=T7y`a)Rfd3N*L_lAWue|sW z`(Eg@^`l7FT|uE5vfA9h2-|pNuw~GlCEYNWSyxwPCk||}@T+Fw*IIvJ%$z^u^m11Q zpUYBQFnv~auS%NM_0H$AV1M^R*Up8WO|w{*GHbys*4x$7m8@Wx#p3U57UKttIACzR zK&rRSU$Vr8By^eByyq+5_!3`>etqOO)^^1!Q-1ztSlPF!cSj!UzQ**&`{yFv%bM(c zDC4P$M)$Ao+%ENvr7H(6{<37trVYQ0dp*VfbC>f;6Zd>!u3hl{ip9>zUriZ12kwjf z@}9$6OU|scELE)-cyiNYeFj~g-)-^tKYVxb%V`Z`J8c@c=u&2rsjZh+)}MQ7o-X3@ zsq|lFJiq5`_=-8{yXzf(!au+D=%Q!p{!;%^=7+=gHoiVIV&BpkZ?;%BE_Yz^(ti7{ zo?A9};AhXsJ(AlEyYk7}qm|Lc*Ot!@KmAR?nU|KfeQS3cyVX1E=}&)L`fFHogExNO z_v0Jhv*pki1J52TUr=Z0d+lot`)qDR%B;w@*2E^)zi6*nm)-wa`}-R0f9mgsi&L#L z`W9Kk(>p)Zs`q05p&ttOynUf$*`Ox}O_(>cs$Or^y+0pVHryCk5%+CmyV|?I_IC)o z;(M*r@XD+G*UgNn@)l4c~^YJ3MJYkQ*MV@p;We+zGsxaRcL zFJ7A1bBiv!mp3~x{nc(4(!X6lX52@{SVK|$3U|X()~wIIdj7YsdfC_HJ#{^!R@6h= zG>yienxE97;GMZo%ztm@N6$1`YZE=fd zj9l5v-EPtGFGqJi#vab;b!h*i?`^8{tJOdA?PZ-`krPK=FL-9bDf>$Mh7K9}58vtR zs?_RW{{BvxziW-4Ge=hcKQVv1I=Et8FoCy^aV6mV?IsxGLinFs@BgFO`?==}Upw(> z?S=uk^f#YYwf$}6?Afm3M}8RM zdiK|cKU}!}Y@>w_|8h9|2mQv(qW&9t%zmynyQf#aqeZLyl?zWF(N4N&>D4JOI(pSG zR6aN5+X3Z&NQ)ve^i!GL)$`kppEv2bWoKm8bFVZgPjZjl`^<^EC(nJ}BflPDdF|TI z&#aU7H|~>l{i^1j9Zr)nd%p~`_ltiud;jT5_=efr9-M?>_J;YKxh6e@b88dzq}i@X zGb?KR+4TE-?sCt+-Mpx@k6Tmg`FpBXtVt~$d_@-?<^3Ns>)+AZ9qQV?@UeG>s*>YA zJGWuY*iZM5>z5|I78MwMUy(Wd<^69x_{65DqhU*D6y`;8<+g{)3wv(Pe)mP)}1QZS||P4S)+{p`J0|kSUf!P-G0{dIYYbFdg^g!*HgN> z(O37n?-}Fn+{SO(eZHjg^{K}26FZEaS(lD&s{Kv+;}hR)-{yg3+rHU4!PM=+qnZ9j z7hQX{lzWHXC)GCAupa)T##29b+MGXlePp{cSEo+f+i&36XG`W4u1-ij`qQ{=tLlu; zY4zRGXIjN-$JWhxuXBT;wI`yA1 z`re-1YiwP={?)YMyPxZJy<%LWiX}B&`DeR@Jy3V|lE#e=c0bqV+?Ff7_qILyQFKLW z^VYqa4!igK!0%r8{OM=+bo9MBsYO8RxHzWKwr48eZjtr3*G6`p{`?rvhT`YLU)Z*) z*QGGu?~g?nuKVLezuhyMyqEvxvk{Mk<;k5RUm5bmrqhkSdi~Wsxf{x}G)I%7GFH!f zbw&Bh>#G)&)&2O%N5ab*w~Jn>FRr?8Mzd{I-%Z)m=)-Rs^nGv9#gvmjOJ3h}(}djx zyT2|z|Kh^^?pD{W@7_1`qqKU@fAnj+C0(Ni)Ef0(__E*Km8}A<%2p+?+3SMg_Mh9B zpzYsV_D!mHpQ|e2$|BfnVw>8aa+^aopVhF#TfI4La$8-Yp*7JOR3fU~U=1eS7wJCx z#)9tG+DN}0`Dy5q&Cc%qT$5f6NyF@(^t@}*lB!9QD<)O^lgGQm;P@&I{^h`-R6ZOr zCBPvWepoOMj+!FHaaITVin?6j;SpLc9ed%2N@GDj9*({6_{`_#U!Pj8+-zghZ) zs_rw-#lPQtz>}2~KJOZ5&8H5=Om5$--HxLdE-qYmdVYo>@5Nc3&g~nte=PR2pb5+Vss~cSFu9Ry6%Rzm7 z)_=^V`11pfkRE=&t4_7nDz_;JbP{y$Up z%f6C&$1ex;wz*k{qFxH^E3k8meWhN*w`OEf8W|ltqm?`UG_FenW8YlkT zDEzG#i>j6#Z1(xpIjxU)9`~%>+vCW=`o8J+e0w#!{vW1Rk&C*2v%BSMFSc%bynI#e zp+Ww)t_8x(x{Pb@nO1x~*%mo2?3Y@rRXY>EeW7K8IlkiRty-z=OGIqM5H@~gm>ibj{3d(@A;eQ5T> z^=9>|v+8)$U9G3gpHaN$NYvDH|BPP->`6^YzwmC4E49D=V(+_48zx=YReWN7x5k6E zywf=L;`+B1d|PZzXje7r;{Lq#?@s*X+N1lQ?wM&{_vBKm|Ev2tw(OMPs%$#8ddRCK zcV*Mzz{?HRH6DgF%>q^i^c}Yit1x?7Z^^5I?+S<0sG-%7C3O{UJl*y{jJ8HX;;Nk$ zrm+(an1;3d{{Ck-b{Khfus3GNq-h^~{J^`qPut!zvQyitO3Pd@)E!``U#;F*X0sld zvwTq9VSBpJj?1jjRyBc25C2+loO)e z{G2R02>*v{FCTp5Xty>GKl|~n@kf`w^JUE^4`)6*|Nramtiz&O*ES9_G$IHJ(w!1( zfT2r78l+3fp^-+qWGK9*vP3*g@h7lvDm%% z5>78Y3S2zT#$i{Hb*7gXFV?NAS!E2~UFo}_9if>WeP^!Jvb$Z-`ZeN7_mR5~1l_&w zAqrvMZ)|;?@5(snM{olAJ!&p^IShnOD;16zbOcv`GsH>{4lsVAoK&Ck#{hkRl|IN$|n;PWGJ`K?YIJo z{^Mrb@AkqRom>z4ZQ%6&3WE3Nv+@29E8SQc1%0}B`C}UR+&Zio({Zu7;k9}C4op$u zsA*hR)G$1#^IkwNMtEq|bV86`@ymoc*!EqyaKG$nRj>7-7q)z)YEG-tHF3BLUpk|; zFXA*rY2@NOUVXFrMQZR!7PZ3(ppvb4+0$Es39LxV4JD*42 zV0&SINaGXwjGHhT;Zq?}cQvG{v(^tCsPv)EGo-BRR3ZD|Ajj7)HDTMqtzK3BsJjK@ zh3M?e0@2NPIo0Et+<$IgC&U7;Oux^zokMgev+pXE=b<7y+HzRc0_NENA?|P0raQI0w6>GBVqs&_CqmX z|0V{1jOf3~0t_TQVAl~Ye8_nO4h~^phyvt1f46L*AioA7Ap1cG2pEI_*IdEMwhIvz z_k$sad=!xifAw009{oLON)EdP1GW4rEFlUEh3bHoV>GV>?b?Wk@K=PI2gtuLehe@QQt(OW+@(LOVM!NnL=;eqQMyb4igH@1xxogyc#UT zJo5!OYTacrm4-u)xuI7Itk<8}uZvttBi)d#o)j{_?_du1%uYoRa=nnc^KoVzo1p)a zSC#_%JVAXbiAVii@#USFGX_MoDmrZG-Y%2GB9#h8LrY8NZU+tfl=_5F4oj5WG<*|w zA(&zZ%I@k6=P1G<)SIA?G&3r zvT^7%v*8PRB?*nk<+_qg(3M{Ai#+{|Gfswt>areXAJL|2??X_=qm8G^>L_1oE6oe1 z5iT$))Sj-A@jd^#sl~;6(q*1$qCqykb-9^JcQokMqKX2LQxHC}c=2A*?yF+U>84nu z&(gq>(!2tD4hdU!j-OTF+;uZg<5HgBLEWTF4IXT4t4sDRY!RFhQi2znrmo6_J;qgT zeVKKR$1VDU!$(g#Jx&rsljsDA3w*&N#i3;5DXJSW#kI1jm*e^-2SRUt#a&>ZAAJG% zl~{d?hWxG={YjtU2Nd>87i2$|bd)J^;SzzsBF{ZKiK#mEHs=YfmobbVFxdYES`1K$ zfD5TAsY)RVf4vIz01$wmhL?`|yWFtxL5}(|m}*6U`A}mpExP~xOov;#4^!RTbksk6pdP5N z)mlha+@zKl1^0^~H!Frj{FoC{h^Tn!7{5NRW06f3#@w6|A6r~{?SnqoOTNMD5N(jl z%UHJ=MKmzLvtkV`f+PKI$f{`%9gFhqqfnw+7n8oB(NnxudS0y`FN$Z2jZ--;j=zQzHbC3LdwP1MmFxM% zl!pq!cx`yiZ4U}(ONU2Kg{q&|6XJDdr3fh5VEs7GDMDuxSE?Uo?ckVG>DD5JiIt7c z!6t!{BvG-%Z!A;UoQepbay;dCKF57lio+tK#Zbd6q=gzG5F0Wvvi@<6G%bO3sw*qD z=e;4~?94^%q-zpb9$39tC0A%q)|;A^uZ*=(V$@HZeR7=b{kR3sV(eDhrI;bKfi&4V z{q@)^TqSv;_(0koH1^h##4O449yIW_zV!5a-rfw`^3k*fJ93PHn<*a~>?)OFr{7)i zq*#0_81Hpj>B~SFqxF@!qV3%q@9+cP+K3kI0!tXm;S&>A>=C!cdy{okFEj+|GNgH) z;HCFoK8sf(xs%(OY1ot&nyBlnqbh&CQMx_R{UTnVyxpGHy{0;Qd)symR}unmwJsQn z^c;X9l{|n6(SNsa9WsUAsR_R;H9>L)fH_ILBLGH@0Rt&J`u`oK@qDe1aWP;F7<4Z$ z`gIRKHp~|z$D3cB(8Q{VnR}3|TrjVFj8Y@-ImeCvA7Bl0XI}LLmv11e1S9t+Jq7nn zw2APnWMejbr2D5L*H8~H%4dFICbg~gu+IV6rpe(qVS0k~ZS{%Ba}s5dg%TT455q+1 zoRjZ~hJ?$y6#FTKdEK_@pNlU3%NWa zFxg5rJD6iII$PHII^xMTK$f(iwPeCp(HpuG^jXKZdtK!Q{+rozH=GBv6}lAa?iPDt zhKf3S=f<{nvhT#KlZ_Tp#|zC{xz`D1JtHyU+S%pPk4{68C;})F*{?Mq6bb?p5&`fW z@7D>j4@^iH!Beylbm*_Z1cfe+g?}^;i9lw8LgxfQ6dS0jOyHFKZRlWqJSaLC?fH?m zV9-G_+3J~HLPnp;sdf}*ehQz>rh^l`Z+Uem6n=gxa0DSs0nI4 zPFxqETihjy-P{haxohX9Mbw{#hlaYkv*c^7#A)2xGHcrGUMXRD=HkjJO;!vT?O95S zXzJ&q;dre6k*xD#Qg#^}2nC{9pu~IWx5xY>(UoTQJ z4^uNMG2HW@6<^W4a=-36$nDj836roStO7PI8=)~W{>wc|dk(V+9VNMI-W+(al@V2} z+ZCZW@Hd`R#S8IWV)HyQ)j1nu=5?9qO?0?-JiB&l8{1_JjYyNwF)uKv9MPaT@SU3e zQ}f%85V>?67P)@T$5)oJmCxGXs=fA~g>3%1`R(7*c^2^|{gRn=ulU`_i-XS-PCx!v zJO2NI>s14Hgne_p`+Fe&lIz8u3sonWZkvpgL^?yolQYuj z9n0QjcW%P!yD_KpK5y&VlLKYVt(NV!6PxoZo^?-hQEfJGN68THJkq?` zxnV+l-Mv#v>TKfJC9*GW>|snf-Q!hc-P11O`CKs@&R1h* zoG_{@wXpg;-ZJv$7hAJ{SFMWpw^^oz7s(Z!5y?LE_AN;n>0;XfelfO@p4s+&Q%Rqw zcZG)TZnS0L#e`(mrBD=NNC#Dw2PQHI(UmjLnlFCXXz)kqGZT7q3+uY4JLh9vCk!L4 zHqANlEMe%lTtZ-LPghRQvR}~3l&CZAgrQp;1CHrPu^NqI-RczD#5@c;^Nz>|3pvj> zA9LjkK8(Bgo7y>gbs5$TBV~Reza3oCc?QL}2uVam2V=r~)x4I3r*qqWQZ1R zN`F?LzxN~k`|Uac@Pm~5(RQ8v!~ae7|EEF~r-)wDtG5~8c3XNOja$=jjg!uim^<;s zV083YvSXOY&&Sp?wOT*=Hyqqs|Y71 z3&-GXB^jgVE^L0yWwfo1A-3_?3adYNV#d`w)}KPjSyb{|>8Kqc@=g@xy)Z&8A9b8z zzNAFjUccEag_8qs1ujSj!Cjm>Ia5wH6X>t?-cbGco#6yUzV;#(f_GbXjL|%jhQ#!O zicH<%b%cqUlJ6JZ-*oaB5#6+X6fageitbDNOj7&#M$rJ)BN4F)U)Gl{ce{!daRu5K z77bnNM5Y5Ns5k38oNghUd>R|K-ly=}T&p}1DoXI3BKs~u%4c40Wk)sk2_b_e|GM>D zd*l`>`iBm}@9NgS7*+?J2DndWKdgSJE?^G<_U}@cKN$Px=D|M;0UdM{(82AplclMt z9UE+powr_n9<8I(4!cap?(Q!6lC|B)CupasSx(^AmN&h!45f%OqJWX5L8dUBe3^AX zFQnSrX`APv(ragV5#7G>FBwFX3AioBG`MeouG{alE;Zrnf8Kbj!ISF^w=<~-62i?+ za375+8-!oWH5a*r)vZiI(8h4O5)E;)>PpG^sXRG@(J#9-6x3S6qo<7LbYJtQc=GH$ z9HX1)BO%IoF77-$RcvIT?-PFceRNs;#7ZueDWUQO-TZ;auq|H#vv-&6(9-aN`+S|* zSs5~iNC+FfpC-Q&5q>+)iZzB|8ZKrVoG_tUk+4*(JhiQUD^MCUn`JA=5q&NV1$75e zuhBtGKa=)9Tp*+~Ha-E z=+5omyXt$z0Rs&XOte?z7IXl^X~LuO58#J`;ZlR66JX=w@C4unh zHULQb_iIIPW9;d)-yTpP4xgo{NZo%{;Jd$tz`)-4*Rat+<(i5IfH(X`gFs1VOwx`X zW2e#m^m-3=lDNss({joQk+}*AlkrzP-4?4SRNc$puT4NU`< znR)T!434wv2?CEgzA&@-HfA8T8)Pnvr0_A+)2fI$Kg>vwZ%{Xr0BX zi>o21d*CszK~E}YdDAsmN@j%XwT#e2qh28a%t3INND!w<*L9Oi5 zfy1sWV+I>|f#5CY=gx@w*JU1?Iz5|zGPa$Y69;a?c#3N}QamDvUuDvdtc7TA*&Ny` z5QO1vW+`|I7mVg?f-7(JVCCKUd+WeMmi9Zg=0}#s3s8K;9bgKL;0K@q{LIDzsMHej zvyVZ%+bg1TD|^tQo_3FjY?1-~lAAsxzkevXs1mooItz9r3 z3m^kC{r?-^EHGIotksxKf`hk}G@B3Id15RvUK=3r{mch7XFqy`6<~GmGdWl1a5Pa6 zX`JTD{kFDRzpVI;@Pf|qSP9l3b(5!r!Ir801`~C!ElqQ{z}&7qUrD>sF2~{xFT<4VltXxc`(YO#d_Q6GL+wnEEz^QJOtfixepzk}Jhz~g4 uXXAsf=li1V!6jLQt-mzuJUCn7RY`W?{hCbD8@(30ZT_X^842xu)BF!=*&KiX diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml deleted file mode 100644 index 51297939a..000000000 --- a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml +++ /dev/null @@ -1,2597 +0,0 @@ - - - - System.Numerics.Vectors - - - - Represents a 3x2 matrix. - - - Creates a 3x2 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a rotation matrix using the given rotation in radians. - The amount of rotation, in radians. - The rotation matrix. - - - Creates a rotation matrix using the specified rotation in radians and a center point. - The amount of rotation, in radians. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified X and Y components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the specified scale with an offset from the specified center. - The uniform scale to use. - The center offset. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The center point. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the given scale. - The uniform scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale with an offset from the specified center point. - The scale to use. - The center offset. - The scaling matrix. - - - Creates a skew matrix from the specified angles in radians. - The X angle, in radians. - The Y angle, in radians. - The skew matrix. - - - Creates a skew matrix from the specified angles in radians and a center point. - The X angle, in radians. - The Y angle, in radians. - The center point. - The skew matrix. - - - Creates a translation matrix from the specified 2-dimensional vector. - The translation position. - The translation matrix. - - - Creates a translation matrix from the specified X and Y components. - The X position. - The Y position. - The translation matrix. - - - Returns a value that indicates whether this instance and another 3x2 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Calculates the determinant for this matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - The multiplicative identify matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Represents a 4x4 matrix. - - - Creates a object from a specified object. - A 3x2 matrix. - - - Creates a 4x4 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the third element in the first row. - The value to assign to the fourth element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the third element in the second row. - The value to assign to the third element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - The value to assign to the third element in the third row. - The value to assign to the fourth element in the third row. - The value to assign to the first element in the fourth row. - The value to assign to the second element in the fourth row. - The value to assign to the third element in the fourth row. - The value to assign to the fourth element in the fourth row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a spherical billboard that rotates around a specified object position. - The position of the object that the billboard will rotate around. - The position of the camera. - The up vector of the camera. - The forward vector of the camera. - The created billboard. - - - Creates a cylindrical billboard that rotates around a specified axis. - The position of the object that the billboard will rotate around. - The position of the camera. - The axis to rotate the billboard around. - The forward vector of the camera. - The forward vector of the object. - The billboard matrix. - - - Creates a matrix that rotates around an arbitrary vector. - The axis to rotate around. - The angle to rotate around axis, in radians. - The rotation matrix. - - - Creates a rotation matrix from the specified Quaternion rotation value. - The source Quaternion. - The rotation matrix. - - - Creates a rotation matrix from the specified yaw, pitch, and roll. - The angle of rotation, in radians, around the Y axis. - The angle of rotation, in radians, around the X axis. - The angle of rotation, in radians, around the Z axis. - The rotation matrix. - - - Creates a view matrix. - The position of the camera. - The target towards which the camera is pointing. - The direction that is "up" from the camera's point of view. - The view matrix. - - - Creates an orthographic perspective matrix from the given view volume dimensions. - The width of the view volume. - The height of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a customized orthographic projection matrix. - The minimum X-value of the view volume. - The maximum X-value of the view volume. - The minimum Y-value of the view volume. - The maximum Y-value of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a perspective projection matrix from the given view volume dimensions. - The width of the view volume at the near view plane. - The height of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a perspective projection matrix based on a field of view, aspect ratio, and near and far view plane distances. - The field of view in the y direction, in radians. - The aspect ratio, defined as view space width divided by height. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - fieldOfView is less than or equal to zero. -or- fieldOfView is greater than or equal to . nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a customized perspective projection matrix. - The minimum x-value of the view volume at the near view plane. - The maximum x-value of the view volume at the near view plane. - The minimum y-value of the view volume at the near view plane. - The maximum y-value of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a matrix that reflects the coordinate system about a specified plane. - The plane about which to create a reflection. - A new matrix expressing the reflection. - - - Creates a matrix for rotating points around the X axis. - The amount, in radians, by which to rotate around the X axis. - The rotation matrix. - - - Creates a matrix for rotating points around the X axis from a center point. - The amount, in radians, by which to rotate around the X axis. - The center point. - The rotation matrix. - - - The amount, in radians, by which to rotate around the Y axis from a center point. - The amount, in radians, by which to rotate around the Y-axis. - The center point. - The rotation matrix. - - - Creates a matrix for rotating points around the Y axis. - The amount, in radians, by which to rotate around the Y-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis. - The amount, in radians, by which to rotate around the Z-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis from a center point. - The amount, in radians, by which to rotate around the Z-axis. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a uniform scaling matrix that scale equally on each axis. - The uniform scaling factor. - The scaling matrix. - - - Creates a scaling matrix with a center point. - The vector that contains the amount to scale on each axis. - The center point. - The scaling matrix. - - - Creates a uniform scaling matrix that scales equally on each axis with a center point. - The uniform scaling factor. - The center point. - The scaling matrix. - - - Creates a scaling matrix from the specified X, Y, and Z components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The center point. - The scaling matrix. - - - Creates a matrix that flattens geometry into a specified plane as if casting a shadow from a specified light source. - The direction from which the light that will cast the shadow is coming. - The plane onto which the new matrix should flatten geometry so as to cast a shadow. - A new matrix that can be used to flatten geometry onto the specified plane from the specified direction. - - - Creates a translation matrix from the specified 3-dimensional vector. - The amount to translate in each axis. - The translation matrix. - - - Creates a translation matrix from the specified X, Y, and Z components. - The amount to translate on the X axis. - The amount to translate on the Y axis. - The amount to translate on the Z axis. - The translation matrix. - - - Creates a world matrix with the specified parameters. - The position of the object. - The forward direction of the object. - The upward direction of the object. Its value is usually [0, 1, 0]. - The world matrix. - - - Attempts to extract the scale, translation, and rotation components from the given scale, rotation, or translation matrix. The return value indicates whether the operation succeeded. - The source matrix. - When this method returns, contains the scaling component of the transformation matrix if the operation succeeded. - When this method returns, contains the rotation component of the transformation matrix if the operation succeeded. - When the method returns, contains the translation component of the transformation matrix if the operation succeeded. - true if matrix was decomposed successfully; otherwise, false. - - - Returns a value that indicates whether this instance and another 4x4 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Calculates the determinant of the current 4x4 matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - Gets the multiplicative identity matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The third element of the first row. - - - - The fourth element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The third element of the second row. - - - - The fourth element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - The third element of the third row. - - - - The fourth element of the third row. - - - - The first element of the fourth row. - - - - The second element of the fourth row. - - - - The third element of the fourth row. - - - - The fourth element of the fourth row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to care - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Transforms the specified matrix by applying the specified Quaternion rotation. - The matrix to transform. - The rotation t apply. - The transformed matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Transposes the rows and columns of a matrix. - The matrix to transpose. - The transposed matrix. - - - Represents a three-dimensional plane. - - - Creates a object from a specified four-dimensional vector. - A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin. - - - Creates a object from a specified normal and the distance along the normal from the origin. - The plane's normal vector. - The plane's distance from the origin along its normal vector. - - - Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal. - The X component of the normal. - The Y component of the normal. - The Z component of the normal. - The distance of the plane along its normal from the origin. - - - Creates a object that contains three specified points. - The first point defining the plane. - The second point defining the plane. - The third point defining the plane. - The plane containing the three points. - - - The distance of the plane along its normal from the origin. - - - - Calculates the dot product of a plane and a 4-dimensional vector. - The plane. - The four-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the normal vector of this plane plus the distance () value of the plane. - The plane. - The 3-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the vector of this plane. - The plane. - The three-dimensional vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns a value that indicates whether this instance and another plane object are equal. - The other plane. - true if the two planes are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - The normal vector of the plane. - - - - Creates a new object whose normal vector is the source plane's normal vector normalized. - The source plane. - The normalized plane. - - - Returns a value that indicates whether two planes are equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether two planes are not equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the string representation of this plane object. - A string that represents this object. - - - Transforms a normalized plane by a 4x4 matrix. - The normalized plane to transform. - The transformation matrix to apply to plane. - The transformed plane. - - - Transforms a normalized plane by a Quaternion rotation. - The normalized plane to transform. - The Quaternion rotation to apply to the plane. - A new plane that results from applying the Quaternion rotation. - - - Represents a vector that is used to encode three-dimensional physical rotations. - - - Creates a quaternion from the specified vector and rotation parts. - The vector part of the quaternion. - The rotation part of the quaternion. - - - Constructs a quaternion from the specified components. - The value to assign to the X component of the quaternion. - The value to assign to the Y component of the quaternion. - The value to assign to the Z component of the quaternion. - The value to assign to the W component of the quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Concatenates two quaternions. - The first quaternion rotation in the series. - The second quaternion rotation in the series. - A new quaternion representing the concatenation of the value1 rotation followed by the value2 rotation. - - - Returns the conjugate of a specified quaternion. - The quaternion. - A new quaternion that is the conjugate of value. - - - Creates a quaternion from a vector and an angle to rotate about the vector. - The vector to rotate around. - The angle, in radians, to rotate around the vector. - The newly created quaternion. - - - Creates a quaternion from the specified rotation matrix. - The rotation matrix. - The newly created quaternion. - - - Creates a new quaternion from the given yaw, pitch, and roll. - The yaw angle, in radians, around the Y axis. - The pitch angle, in radians, around the X axis. - The roll angle, in radians, around the Z axis. - The resulting quaternion. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Calculates the dot product of two quaternions. - The first quaternion. - The second quaternion. - The dot product. - - - Returns a value that indicates whether this instance and another quaternion are equal. - The other quaternion. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Gets a quaternion that represents no rotation. - A quaternion whose values are (0, 0, 0, 1). - - - Returns the inverse of a quaternion. - The quaternion. - The inverted quaternion. - - - Gets a value that indicates whether the current instance is the identity quaternion. - true if the current instance is the identity quaternion; otherwise, false. - - - Calculates the length of the quaternion. - The computed length of the quaternion. - - - Calculates the squared length of the quaternion. - The length squared of the quaternion. - - - Performs a linear interpolation between two quaternions based on a value that specifies the weighting of the second quaternion. - The first quaternion. - The second quaternion. - The relative weight of quaternion2 in the interpolation. - The interpolated quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Divides each component of a specified by its length. - The quaternion to normalize. - The normalized quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Returns a value that indicates whether two quaternions are equal. - The first quaternion to compare. - The second quaternion to compare. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether two quaternions are not equal. - The first quaternion to compare. - The second quaternion to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Interpolates between two quaternions, using spherical linear interpolation. - The first quaternion. - The second quaternion. - The relative weight of the second quaternion in the interpolation. - The interpolated quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this quaternion. - The string representation of this quaternion. - - - The rotation component of the quaternion. - - - - The X value of the vector component of the quaternion. - - - - The Y value of the vector component of the quaternion. - - - - The Z value of the vector component of the quaternion. - - - - Represents a single vector of a specified numeric type that is suitable for low-level optimization of parallel algorithms. - The vector type. T can be any primitive numeric type. - - - Creates a vector whose components are of a specified type. - The numeric type that defines the type of the components in the vector. - - - Creates a vector from a specified array. - A numeric array. - values is null. - - - Creates a vector from a specified array starting at a specified index position. - A numeric array. - The starting index position from which to create the vector. - values is null. - index is less than zero. -or- The length of values minus index is less than . - - - Copies the vector instance to a specified destination array. - The array to receive a copy of the vector values. - destination is null. - The number of elements in the current vector is greater than the number of elements available in the destination array. - - - Copies the vector instance to a specified destination array starting at a specified index position. - The array to receive a copy of the vector values. - The starting index in destination at which to begin the copy operation. - destination is null. - The number of elements in the current instance is greater than the number of elements available from startIndex to the end of the destination array. - index is less than zero or greater than the last index in destination. - - - Returns the number of elements stored in the vector. - The number of elements stored in the vector. - Access to the property getter via reflection is not supported. - - - Returns a value that indicates whether this instance is equal to a specified vector. - The vector to compare with this instance. - true if the current instance and other are equal; otherwise, false. - - - Returns a value that indicates whether this instance is equal to a specified object. - The object to compare with this instance. - true if the current instance and obj are equal; otherwise, false. The method returns false if obj is null, or if obj is a vector of a different type than the current instance. - - - Returns the hash code for this instance. - The hash code. - - - Gets the element at a specified index. - The index of the element to return. - The element at index index. - index is less than zero. -or- index is greater than or equal to . - - - Returns a vector containing all ones. - A vector containing all ones. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Returns a new vector by performing a bitwise And operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise And of left and right. - - - Returns a new vector by performing a bitwise Or operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise Or of the elements in left and right. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Returns a value that indicates whether each pair of elements in two specified vectors are equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a new vector by performing a bitwise XOr operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise XOr of the elements in left and right. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Returns a value that indicates whether any single pair of elements in the specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if any element pairs in left and right are equal. false if no element pairs are equal. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar value. - The source vector. - A scalar value. - The scaled vector. - - - Multiplies a vector by the given scalar. - The scalar value. - The source vector. - The scaled vector. - - - Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements. - The source vector. - The one's complement vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates a given vector. - The vector to negate. - The negated vector. - - - Returns the string representation of this vector using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Returns the string representation of this vector using default formatting. - The string representation of this vector. - - - Returns the string representation of this vector using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns a vector containing all zeroes. - A vector containing all zeroes. - - - Provides a collection of static convenience methods for creating, manipulating, combining, and converting generic vectors. - - - Returns a new vector whose elements are the absolute values of the given vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The absolute value vector. - - - Returns a new vector whose values are the sum of each pair of elements from two given vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The summed vector. - - - Returns a new vector by performing a bitwise And Not operation on each pair of corresponding elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a double-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of signed bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a single-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Returns a new vector by performing a bitwise And operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector by performing a bitwise Or operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Creates a new single-precision vector with elements selected between two specified single-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new double-precision vector with elements selected between two specified double-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new vector of a specified type with elements selected between two specified source vectors of the same type based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The vector type. T can be any primitive numeric type. - The new vector with elements selected based on the mask. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose values are the result of dividing the first vector's elements by the corresponding elements in the second vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The divided vector. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The dot product. - - - Returns a new integral vector whose elements signal whether the elements in two specified double-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified integral vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in two specified long integer vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified single-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in two specified vectors of the same type are equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether each pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left and right are equal; otherwise, false. - - - Returns a value that indicates whether any single pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element pair in left and right is equal; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are greater than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are greater than their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than their corresponding elements in the second vector of the same time. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the single-precision floating-point second vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than or equal to their corresponding elements in the second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than or equal to their corresponding elements in the second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than or equal to their corresponding elements in the second vector of the same type. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than or equal to all the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than or equal to the corresponding element in right; otherwise, false. - - - Gets a value that indicates whether vector operations are subject to hardware acceleration through JIT intrinsic support. - true if vector operations are subject to hardware acceleration; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision vector are less than their corresponding elements in a second single-precision vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in one vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all of the elements in the first vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than or equal to their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than or equal to their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less or equal to their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are less than or equal to their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than or equal to the corresponding element in right; otherwise, false. - - - Returns a new vector whose elements are the maximum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The maximum vector. - - - Returns a new vector whose elements are the minimum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The minimum vector. - - - Returns a new vector whose values are a scalar value multiplied by each of the values of a specified vector. - The scalar value. - The vector. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - Returns a new vector whose values are the product of each pair of elements in two specified vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The product vector. - - - Returns a new vector whose values are the values of a specified vector each multiplied by a scalar value. - The vector. - The scalar value. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose elements are the negation of the corresponding element in the specified vector. - The source vector. - The vector type. T can be any primitive numeric type. - The negated vector. - - - Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector whose elements are the square roots of a specified vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The square root vector. - - - Returns a new vector whose values are the difference between the elements in the second vector and their corresponding elements in the first vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The difference vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector by performing a bitwise exclusive Or (XOr) operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Represents a vector with two single-precision floating-point values. - - - Creates a new object whose two elements have the same value. - The value to assign to both elements. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of the vector. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 2 elements are equal to one. - A vector whose two elements are equal to one (that is, it returns the vector (1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 3x2 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 3x2 matrix. - The source vector. - The matrix. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0). - The vector (1,0). - - - Gets the vector (0,1). - The vector (0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - Returns a vector whose 2 elements are equal to zero. - A vector whose two elements are equal to zero (that is, it returns the vector (0,0). - - - Represents a vector with three single-precision floating-point values. - - - Creates a new object whose three elements have the same value. - The value to assign to all three elements. - - - Creates a new object from the specified object and the specified value. - The vector with two elements. - The additional value to assign to the field. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the cross product of two vectors. - The first vector. - The second vector. - The cross product. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 3 elements are equal to one. - A vector whose three elements are equal to one (that is, it returns the vector (1,1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0,0). - The vector (1,0,0). - - - Gets the vector (0,1,0). - The vector (0,1,0).. - - - Gets the vector (0,0,1). - The vector (0,0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 3 elements are equal to zero. - A vector whose three elements are equal to zero (that is, it returns the vector (0,0,0). - - - Represents a vector with four single-precision floating-point values. - - - Creates a new object whose four elements have the same value. - The value to assign to all four elements. - - - Constructs a new object from the specified object and a W component. - The vector to use for the X, Y, and Z components. - The W component. - - - Creates a new object from the specified object and a Z and a W component. - The vector to use for the X and Y components. - The Z component. - The W component. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 4 elements are equal to one. - Returns . - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a four-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a four-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a three-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a two-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a two-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a three-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Gets the vector (0,0,0,1). - The vector (0,0,0,1). - - - Gets the vector (1,0,0,0). - The vector (1,0,0,0). - - - Gets the vector (0,1,0,0). - The vector (0,1,0,0).. - - - Gets a vector whose 4 elements are equal to zero. - The vector (0,0,1,0). - - - The W component of the vector. - - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 4 elements are equal to zero. - A vector whose four elements are equal to zero (that is, it returns the vector (0,0,0,0). - - - \ No newline at end of file diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/xamarinios10/_._ b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/xamarinios10/_._ deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/xamarinmac20/_._ b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/xamarinmac20/_._ deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/xamarintvos10/_._ b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/xamarintvos10/_._ deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/xamarinwatchos10/_._ b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/lib/xamarinwatchos10/_._ deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/MonoAndroid10/_._ b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/MonoAndroid10/_._ deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/MonoTouch10/_._ b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/MonoTouch10/_._ deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/net46/System.Numerics.Vectors.dll b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/net46/System.Numerics.Vectors.dll deleted file mode 100644 index e91f855a1235992af7c79b3dd157a2bf4133db61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29568 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 - - - System.Numerics.Vectors - - - - Represents a 3x2 matrix. - - - Creates a 3x2 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a rotation matrix using the given rotation in radians. - The amount of rotation, in radians. - The rotation matrix. - - - Creates a rotation matrix using the specified rotation in radians and a center point. - The amount of rotation, in radians. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified X and Y components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the specified scale with an offset from the specified center. - The uniform scale to use. - The center offset. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The center point. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the given scale. - The uniform scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale with an offset from the specified center point. - The scale to use. - The center offset. - The scaling matrix. - - - Creates a skew matrix from the specified angles in radians. - The X angle, in radians. - The Y angle, in radians. - The skew matrix. - - - Creates a skew matrix from the specified angles in radians and a center point. - The X angle, in radians. - The Y angle, in radians. - The center point. - The skew matrix. - - - Creates a translation matrix from the specified 2-dimensional vector. - The translation position. - The translation matrix. - - - Creates a translation matrix from the specified X and Y components. - The X position. - The Y position. - The translation matrix. - - - Returns a value that indicates whether this instance and another 3x2 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Calculates the determinant for this matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - The multiplicative identify matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Represents a 4x4 matrix. - - - Creates a object from a specified object. - A 3x2 matrix. - - - Creates a 4x4 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the third element in the first row. - The value to assign to the fourth element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the third element in the second row. - The value to assign to the third element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - The value to assign to the third element in the third row. - The value to assign to the fourth element in the third row. - The value to assign to the first element in the fourth row. - The value to assign to the second element in the fourth row. - The value to assign to the third element in the fourth row. - The value to assign to the fourth element in the fourth row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a spherical billboard that rotates around a specified object position. - The position of the object that the billboard will rotate around. - The position of the camera. - The up vector of the camera. - The forward vector of the camera. - The created billboard. - - - Creates a cylindrical billboard that rotates around a specified axis. - The position of the object that the billboard will rotate around. - The position of the camera. - The axis to rotate the billboard around. - The forward vector of the camera. - The forward vector of the object. - The billboard matrix. - - - Creates a matrix that rotates around an arbitrary vector. - The axis to rotate around. - The angle to rotate around axis, in radians. - The rotation matrix. - - - Creates a rotation matrix from the specified Quaternion rotation value. - The source Quaternion. - The rotation matrix. - - - Creates a rotation matrix from the specified yaw, pitch, and roll. - The angle of rotation, in radians, around the Y axis. - The angle of rotation, in radians, around the X axis. - The angle of rotation, in radians, around the Z axis. - The rotation matrix. - - - Creates a view matrix. - The position of the camera. - The target towards which the camera is pointing. - The direction that is "up" from the camera's point of view. - The view matrix. - - - Creates an orthographic perspective matrix from the given view volume dimensions. - The width of the view volume. - The height of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a customized orthographic projection matrix. - The minimum X-value of the view volume. - The maximum X-value of the view volume. - The minimum Y-value of the view volume. - The maximum Y-value of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a perspective projection matrix from the given view volume dimensions. - The width of the view volume at the near view plane. - The height of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a perspective projection matrix based on a field of view, aspect ratio, and near and far view plane distances. - The field of view in the y direction, in radians. - The aspect ratio, defined as view space width divided by height. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - fieldOfView is less than or equal to zero. -or- fieldOfView is greater than or equal to . nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a customized perspective projection matrix. - The minimum x-value of the view volume at the near view plane. - The maximum x-value of the view volume at the near view plane. - The minimum y-value of the view volume at the near view plane. - The maximum y-value of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a matrix that reflects the coordinate system about a specified plane. - The plane about which to create a reflection. - A new matrix expressing the reflection. - - - Creates a matrix for rotating points around the X axis. - The amount, in radians, by which to rotate around the X axis. - The rotation matrix. - - - Creates a matrix for rotating points around the X axis from a center point. - The amount, in radians, by which to rotate around the X axis. - The center point. - The rotation matrix. - - - The amount, in radians, by which to rotate around the Y axis from a center point. - The amount, in radians, by which to rotate around the Y-axis. - The center point. - The rotation matrix. - - - Creates a matrix for rotating points around the Y axis. - The amount, in radians, by which to rotate around the Y-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis. - The amount, in radians, by which to rotate around the Z-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis from a center point. - The amount, in radians, by which to rotate around the Z-axis. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a uniform scaling matrix that scale equally on each axis. - The uniform scaling factor. - The scaling matrix. - - - Creates a scaling matrix with a center point. - The vector that contains the amount to scale on each axis. - The center point. - The scaling matrix. - - - Creates a uniform scaling matrix that scales equally on each axis with a center point. - The uniform scaling factor. - The center point. - The scaling matrix. - - - Creates a scaling matrix from the specified X, Y, and Z components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The center point. - The scaling matrix. - - - Creates a matrix that flattens geometry into a specified plane as if casting a shadow from a specified light source. - The direction from which the light that will cast the shadow is coming. - The plane onto which the new matrix should flatten geometry so as to cast a shadow. - A new matrix that can be used to flatten geometry onto the specified plane from the specified direction. - - - Creates a translation matrix from the specified 3-dimensional vector. - The amount to translate in each axis. - The translation matrix. - - - Creates a translation matrix from the specified X, Y, and Z components. - The amount to translate on the X axis. - The amount to translate on the Y axis. - The amount to translate on the Z axis. - The translation matrix. - - - Creates a world matrix with the specified parameters. - The position of the object. - The forward direction of the object. - The upward direction of the object. Its value is usually [0, 1, 0]. - The world matrix. - - - Attempts to extract the scale, translation, and rotation components from the given scale, rotation, or translation matrix. The return value indicates whether the operation succeeded. - The source matrix. - When this method returns, contains the scaling component of the transformation matrix if the operation succeeded. - When this method returns, contains the rotation component of the transformation matrix if the operation succeeded. - When the method returns, contains the translation component of the transformation matrix if the operation succeeded. - true if matrix was decomposed successfully; otherwise, false. - - - Returns a value that indicates whether this instance and another 4x4 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Calculates the determinant of the current 4x4 matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - Gets the multiplicative identity matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The third element of the first row. - - - - The fourth element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The third element of the second row. - - - - The fourth element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - The third element of the third row. - - - - The fourth element of the third row. - - - - The first element of the fourth row. - - - - The second element of the fourth row. - - - - The third element of the fourth row. - - - - The fourth element of the fourth row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to care - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Transforms the specified matrix by applying the specified Quaternion rotation. - The matrix to transform. - The rotation t apply. - The transformed matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Transposes the rows and columns of a matrix. - The matrix to transpose. - The transposed matrix. - - - Represents a three-dimensional plane. - - - Creates a object from a specified four-dimensional vector. - A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin. - - - Creates a object from a specified normal and the distance along the normal from the origin. - The plane's normal vector. - The plane's distance from the origin along its normal vector. - - - Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal. - The X component of the normal. - The Y component of the normal. - The Z component of the normal. - The distance of the plane along its normal from the origin. - - - Creates a object that contains three specified points. - The first point defining the plane. - The second point defining the plane. - The third point defining the plane. - The plane containing the three points. - - - The distance of the plane along its normal from the origin. - - - - Calculates the dot product of a plane and a 4-dimensional vector. - The plane. - The four-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the normal vector of this plane plus the distance () value of the plane. - The plane. - The 3-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the vector of this plane. - The plane. - The three-dimensional vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns a value that indicates whether this instance and another plane object are equal. - The other plane. - true if the two planes are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - The normal vector of the plane. - - - - Creates a new object whose normal vector is the source plane's normal vector normalized. - The source plane. - The normalized plane. - - - Returns a value that indicates whether two planes are equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether two planes are not equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the string representation of this plane object. - A string that represents this object. - - - Transforms a normalized plane by a 4x4 matrix. - The normalized plane to transform. - The transformation matrix to apply to plane. - The transformed plane. - - - Transforms a normalized plane by a Quaternion rotation. - The normalized plane to transform. - The Quaternion rotation to apply to the plane. - A new plane that results from applying the Quaternion rotation. - - - Represents a vector that is used to encode three-dimensional physical rotations. - - - Creates a quaternion from the specified vector and rotation parts. - The vector part of the quaternion. - The rotation part of the quaternion. - - - Constructs a quaternion from the specified components. - The value to assign to the X component of the quaternion. - The value to assign to the Y component of the quaternion. - The value to assign to the Z component of the quaternion. - The value to assign to the W component of the quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Concatenates two quaternions. - The first quaternion rotation in the series. - The second quaternion rotation in the series. - A new quaternion representing the concatenation of the value1 rotation followed by the value2 rotation. - - - Returns the conjugate of a specified quaternion. - The quaternion. - A new quaternion that is the conjugate of value. - - - Creates a quaternion from a vector and an angle to rotate about the vector. - The vector to rotate around. - The angle, in radians, to rotate around the vector. - The newly created quaternion. - - - Creates a quaternion from the specified rotation matrix. - The rotation matrix. - The newly created quaternion. - - - Creates a new quaternion from the given yaw, pitch, and roll. - The yaw angle, in radians, around the Y axis. - The pitch angle, in radians, around the X axis. - The roll angle, in radians, around the Z axis. - The resulting quaternion. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Calculates the dot product of two quaternions. - The first quaternion. - The second quaternion. - The dot product. - - - Returns a value that indicates whether this instance and another quaternion are equal. - The other quaternion. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Gets a quaternion that represents no rotation. - A quaternion whose values are (0, 0, 0, 1). - - - Returns the inverse of a quaternion. - The quaternion. - The inverted quaternion. - - - Gets a value that indicates whether the current instance is the identity quaternion. - true if the current instance is the identity quaternion; otherwise, false. - - - Calculates the length of the quaternion. - The computed length of the quaternion. - - - Calculates the squared length of the quaternion. - The length squared of the quaternion. - - - Performs a linear interpolation between two quaternions based on a value that specifies the weighting of the second quaternion. - The first quaternion. - The second quaternion. - The relative weight of quaternion2 in the interpolation. - The interpolated quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Divides each component of a specified by its length. - The quaternion to normalize. - The normalized quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Returns a value that indicates whether two quaternions are equal. - The first quaternion to compare. - The second quaternion to compare. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether two quaternions are not equal. - The first quaternion to compare. - The second quaternion to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Interpolates between two quaternions, using spherical linear interpolation. - The first quaternion. - The second quaternion. - The relative weight of the second quaternion in the interpolation. - The interpolated quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this quaternion. - The string representation of this quaternion. - - - The rotation component of the quaternion. - - - - The X value of the vector component of the quaternion. - - - - The Y value of the vector component of the quaternion. - - - - The Z value of the vector component of the quaternion. - - - - Represents a single vector of a specified numeric type that is suitable for low-level optimization of parallel algorithms. - The vector type. T can be any primitive numeric type. - - - Creates a vector whose components are of a specified type. - The numeric type that defines the type of the components in the vector. - - - Creates a vector from a specified array. - A numeric array. - values is null. - - - Creates a vector from a specified array starting at a specified index position. - A numeric array. - The starting index position from which to create the vector. - values is null. - index is less than zero. -or- The length of values minus index is less than . - - - Copies the vector instance to a specified destination array. - The array to receive a copy of the vector values. - destination is null. - The number of elements in the current vector is greater than the number of elements available in the destination array. - - - Copies the vector instance to a specified destination array starting at a specified index position. - The array to receive a copy of the vector values. - The starting index in destination at which to begin the copy operation. - destination is null. - The number of elements in the current instance is greater than the number of elements available from startIndex to the end of the destination array. - index is less than zero or greater than the last index in destination. - - - Returns the number of elements stored in the vector. - The number of elements stored in the vector. - Access to the property getter via reflection is not supported. - - - Returns a value that indicates whether this instance is equal to a specified vector. - The vector to compare with this instance. - true if the current instance and other are equal; otherwise, false. - - - Returns a value that indicates whether this instance is equal to a specified object. - The object to compare with this instance. - true if the current instance and obj are equal; otherwise, false. The method returns false if obj is null, or if obj is a vector of a different type than the current instance. - - - Returns the hash code for this instance. - The hash code. - - - Gets the element at a specified index. - The index of the element to return. - The element at index index. - index is less than zero. -or- index is greater than or equal to . - - - Returns a vector containing all ones. - A vector containing all ones. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Returns a new vector by performing a bitwise And operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise And of left and right. - - - Returns a new vector by performing a bitwise Or operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise Or of the elements in left and right. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Returns a value that indicates whether each pair of elements in two specified vectors are equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a new vector by performing a bitwise XOr operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise XOr of the elements in left and right. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Returns a value that indicates whether any single pair of elements in the specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if any element pairs in left and right are equal. false if no element pairs are equal. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar value. - The source vector. - A scalar value. - The scaled vector. - - - Multiplies a vector by the given scalar. - The scalar value. - The source vector. - The scaled vector. - - - Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements. - The source vector. - The one's complement vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates a given vector. - The vector to negate. - The negated vector. - - - Returns the string representation of this vector using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Returns the string representation of this vector using default formatting. - The string representation of this vector. - - - Returns the string representation of this vector using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns a vector containing all zeroes. - A vector containing all zeroes. - - - Provides a collection of static convenience methods for creating, manipulating, combining, and converting generic vectors. - - - Returns a new vector whose elements are the absolute values of the given vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The absolute value vector. - - - Returns a new vector whose values are the sum of each pair of elements from two given vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The summed vector. - - - Returns a new vector by performing a bitwise And Not operation on each pair of corresponding elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a double-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of signed bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a single-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Returns a new vector by performing a bitwise And operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector by performing a bitwise Or operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Creates a new single-precision vector with elements selected between two specified single-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new double-precision vector with elements selected between two specified double-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new vector of a specified type with elements selected between two specified source vectors of the same type based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The vector type. T can be any primitive numeric type. - The new vector with elements selected based on the mask. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose values are the result of dividing the first vector's elements by the corresponding elements in the second vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The divided vector. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The dot product. - - - Returns a new integral vector whose elements signal whether the elements in two specified double-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified integral vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in two specified long integer vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified single-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in two specified vectors of the same type are equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether each pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left and right are equal; otherwise, false. - - - Returns a value that indicates whether any single pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element pair in left and right is equal; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are greater than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are greater than their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than their corresponding elements in the second vector of the same time. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the single-precision floating-point second vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than or equal to their corresponding elements in the second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than or equal to their corresponding elements in the second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than or equal to their corresponding elements in the second vector of the same type. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than or equal to all the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than or equal to the corresponding element in right; otherwise, false. - - - Gets a value that indicates whether vector operations are subject to hardware acceleration through JIT intrinsic support. - true if vector operations are subject to hardware acceleration; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision vector are less than their corresponding elements in a second single-precision vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in one vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all of the elements in the first vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than or equal to their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than or equal to their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less or equal to their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are less than or equal to their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than or equal to the corresponding element in right; otherwise, false. - - - Returns a new vector whose elements are the maximum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The maximum vector. - - - Returns a new vector whose elements are the minimum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The minimum vector. - - - Returns a new vector whose values are a scalar value multiplied by each of the values of a specified vector. - The scalar value. - The vector. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - Returns a new vector whose values are the product of each pair of elements in two specified vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The product vector. - - - Returns a new vector whose values are the values of a specified vector each multiplied by a scalar value. - The vector. - The scalar value. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose elements are the negation of the corresponding element in the specified vector. - The source vector. - The vector type. T can be any primitive numeric type. - The negated vector. - - - Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector whose elements are the square roots of a specified vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The square root vector. - - - Returns a new vector whose values are the difference between the elements in the second vector and their corresponding elements in the first vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The difference vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector by performing a bitwise exclusive Or (XOr) operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Represents a vector with two single-precision floating-point values. - - - Creates a new object whose two elements have the same value. - The value to assign to both elements. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of the vector. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 2 elements are equal to one. - A vector whose two elements are equal to one (that is, it returns the vector (1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 3x2 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 3x2 matrix. - The source vector. - The matrix. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0). - The vector (1,0). - - - Gets the vector (0,1). - The vector (0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - Returns a vector whose 2 elements are equal to zero. - A vector whose two elements are equal to zero (that is, it returns the vector (0,0). - - - Represents a vector with three single-precision floating-point values. - - - Creates a new object whose three elements have the same value. - The value to assign to all three elements. - - - Creates a new object from the specified object and the specified value. - The vector with two elements. - The additional value to assign to the field. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the cross product of two vectors. - The first vector. - The second vector. - The cross product. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 3 elements are equal to one. - A vector whose three elements are equal to one (that is, it returns the vector (1,1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0,0). - The vector (1,0,0). - - - Gets the vector (0,1,0). - The vector (0,1,0).. - - - Gets the vector (0,0,1). - The vector (0,0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 3 elements are equal to zero. - A vector whose three elements are equal to zero (that is, it returns the vector (0,0,0). - - - Represents a vector with four single-precision floating-point values. - - - Creates a new object whose four elements have the same value. - The value to assign to all four elements. - - - Constructs a new object from the specified object and a W component. - The vector to use for the X, Y, and Z components. - The W component. - - - Creates a new object from the specified object and a Z and a W component. - The vector to use for the X and Y components. - The Z component. - The W component. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 4 elements are equal to one. - Returns . - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a four-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a four-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a three-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a two-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a two-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a three-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Gets the vector (0,0,0,1). - The vector (0,0,0,1). - - - Gets the vector (1,0,0,0). - The vector (1,0,0,0). - - - Gets the vector (0,1,0,0). - The vector (0,1,0,0).. - - - Gets a vector whose 4 elements are equal to zero. - The vector (0,0,1,0). - - - The W component of the vector. - - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 4 elements are equal to zero. - A vector whose four elements are equal to zero (that is, it returns the vector (0,0,0,0). - - - \ No newline at end of file diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/netcoreapp2.0/_._ b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/netcoreapp2.0/_._ deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/netstandard1.0/System.Numerics.Vectors.dll b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/netstandard1.0/System.Numerics.Vectors.dll deleted file mode 100644 index d174da04775207dbbcc5c6959f409cfc37ae7855..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38272 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 Yl1)(0QQ@d8!Ka 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 - - - System.Numerics.Vectors - - - - Represents a 3x2 matrix. - - - Creates a 3x2 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a rotation matrix using the given rotation in radians. - The amount of rotation, in radians. - The rotation matrix. - - - Creates a rotation matrix using the specified rotation in radians and a center point. - The amount of rotation, in radians. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified X and Y components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the specified scale with an offset from the specified center. - The uniform scale to use. - The center offset. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The center point. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the given scale. - The uniform scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale with an offset from the specified center point. - The scale to use. - The center offset. - The scaling matrix. - - - Creates a skew matrix from the specified angles in radians. - The X angle, in radians. - The Y angle, in radians. - The skew matrix. - - - Creates a skew matrix from the specified angles in radians and a center point. - The X angle, in radians. - The Y angle, in radians. - The center point. - The skew matrix. - - - Creates a translation matrix from the specified 2-dimensional vector. - The translation position. - The translation matrix. - - - Creates a translation matrix from the specified X and Y components. - The X position. - The Y position. - The translation matrix. - - - Returns a value that indicates whether this instance and another 3x2 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Calculates the determinant for this matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - The multiplicative identify matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Represents a 4x4 matrix. - - - Creates a object from a specified object. - A 3x2 matrix. - - - Creates a 4x4 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the third element in the first row. - The value to assign to the fourth element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the third element in the second row. - The value to assign to the third element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - The value to assign to the third element in the third row. - The value to assign to the fourth element in the third row. - The value to assign to the first element in the fourth row. - The value to assign to the second element in the fourth row. - The value to assign to the third element in the fourth row. - The value to assign to the fourth element in the fourth row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a spherical billboard that rotates around a specified object position. - The position of the object that the billboard will rotate around. - The position of the camera. - The up vector of the camera. - The forward vector of the camera. - The created billboard. - - - Creates a cylindrical billboard that rotates around a specified axis. - The position of the object that the billboard will rotate around. - The position of the camera. - The axis to rotate the billboard around. - The forward vector of the camera. - The forward vector of the object. - The billboard matrix. - - - Creates a matrix that rotates around an arbitrary vector. - The axis to rotate around. - The angle to rotate around axis, in radians. - The rotation matrix. - - - Creates a rotation matrix from the specified Quaternion rotation value. - The source Quaternion. - The rotation matrix. - - - Creates a rotation matrix from the specified yaw, pitch, and roll. - The angle of rotation, in radians, around the Y axis. - The angle of rotation, in radians, around the X axis. - The angle of rotation, in radians, around the Z axis. - The rotation matrix. - - - Creates a view matrix. - The position of the camera. - The target towards which the camera is pointing. - The direction that is "up" from the camera's point of view. - The view matrix. - - - Creates an orthographic perspective matrix from the given view volume dimensions. - The width of the view volume. - The height of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a customized orthographic projection matrix. - The minimum X-value of the view volume. - The maximum X-value of the view volume. - The minimum Y-value of the view volume. - The maximum Y-value of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a perspective projection matrix from the given view volume dimensions. - The width of the view volume at the near view plane. - The height of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a perspective projection matrix based on a field of view, aspect ratio, and near and far view plane distances. - The field of view in the y direction, in radians. - The aspect ratio, defined as view space width divided by height. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - fieldOfView is less than or equal to zero. -or- fieldOfView is greater than or equal to . nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a customized perspective projection matrix. - The minimum x-value of the view volume at the near view plane. - The maximum x-value of the view volume at the near view plane. - The minimum y-value of the view volume at the near view plane. - The maximum y-value of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a matrix that reflects the coordinate system about a specified plane. - The plane about which to create a reflection. - A new matrix expressing the reflection. - - - Creates a matrix for rotating points around the X axis. - The amount, in radians, by which to rotate around the X axis. - The rotation matrix. - - - Creates a matrix for rotating points around the X axis from a center point. - The amount, in radians, by which to rotate around the X axis. - The center point. - The rotation matrix. - - - The amount, in radians, by which to rotate around the Y axis from a center point. - The amount, in radians, by which to rotate around the Y-axis. - The center point. - The rotation matrix. - - - Creates a matrix for rotating points around the Y axis. - The amount, in radians, by which to rotate around the Y-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis. - The amount, in radians, by which to rotate around the Z-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis from a center point. - The amount, in radians, by which to rotate around the Z-axis. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a uniform scaling matrix that scale equally on each axis. - The uniform scaling factor. - The scaling matrix. - - - Creates a scaling matrix with a center point. - The vector that contains the amount to scale on each axis. - The center point. - The scaling matrix. - - - Creates a uniform scaling matrix that scales equally on each axis with a center point. - The uniform scaling factor. - The center point. - The scaling matrix. - - - Creates a scaling matrix from the specified X, Y, and Z components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The center point. - The scaling matrix. - - - Creates a matrix that flattens geometry into a specified plane as if casting a shadow from a specified light source. - The direction from which the light that will cast the shadow is coming. - The plane onto which the new matrix should flatten geometry so as to cast a shadow. - A new matrix that can be used to flatten geometry onto the specified plane from the specified direction. - - - Creates a translation matrix from the specified 3-dimensional vector. - The amount to translate in each axis. - The translation matrix. - - - Creates a translation matrix from the specified X, Y, and Z components. - The amount to translate on the X axis. - The amount to translate on the Y axis. - The amount to translate on the Z axis. - The translation matrix. - - - Creates a world matrix with the specified parameters. - The position of the object. - The forward direction of the object. - The upward direction of the object. Its value is usually [0, 1, 0]. - The world matrix. - - - Attempts to extract the scale, translation, and rotation components from the given scale, rotation, or translation matrix. The return value indicates whether the operation succeeded. - The source matrix. - When this method returns, contains the scaling component of the transformation matrix if the operation succeeded. - When this method returns, contains the rotation component of the transformation matrix if the operation succeeded. - When the method returns, contains the translation component of the transformation matrix if the operation succeeded. - true if matrix was decomposed successfully; otherwise, false. - - - Returns a value that indicates whether this instance and another 4x4 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Calculates the determinant of the current 4x4 matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - Gets the multiplicative identity matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The third element of the first row. - - - - The fourth element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The third element of the second row. - - - - The fourth element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - The third element of the third row. - - - - The fourth element of the third row. - - - - The first element of the fourth row. - - - - The second element of the fourth row. - - - - The third element of the fourth row. - - - - The fourth element of the fourth row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to care - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Transforms the specified matrix by applying the specified Quaternion rotation. - The matrix to transform. - The rotation t apply. - The transformed matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Transposes the rows and columns of a matrix. - The matrix to transpose. - The transposed matrix. - - - Represents a three-dimensional plane. - - - Creates a object from a specified four-dimensional vector. - A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin. - - - Creates a object from a specified normal and the distance along the normal from the origin. - The plane's normal vector. - The plane's distance from the origin along its normal vector. - - - Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal. - The X component of the normal. - The Y component of the normal. - The Z component of the normal. - The distance of the plane along its normal from the origin. - - - Creates a object that contains three specified points. - The first point defining the plane. - The second point defining the plane. - The third point defining the plane. - The plane containing the three points. - - - The distance of the plane along its normal from the origin. - - - - Calculates the dot product of a plane and a 4-dimensional vector. - The plane. - The four-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the normal vector of this plane plus the distance () value of the plane. - The plane. - The 3-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the vector of this plane. - The plane. - The three-dimensional vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns a value that indicates whether this instance and another plane object are equal. - The other plane. - true if the two planes are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - The normal vector of the plane. - - - - Creates a new object whose normal vector is the source plane's normal vector normalized. - The source plane. - The normalized plane. - - - Returns a value that indicates whether two planes are equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether two planes are not equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the string representation of this plane object. - A string that represents this object. - - - Transforms a normalized plane by a 4x4 matrix. - The normalized plane to transform. - The transformation matrix to apply to plane. - The transformed plane. - - - Transforms a normalized plane by a Quaternion rotation. - The normalized plane to transform. - The Quaternion rotation to apply to the plane. - A new plane that results from applying the Quaternion rotation. - - - Represents a vector that is used to encode three-dimensional physical rotations. - - - Creates a quaternion from the specified vector and rotation parts. - The vector part of the quaternion. - The rotation part of the quaternion. - - - Constructs a quaternion from the specified components. - The value to assign to the X component of the quaternion. - The value to assign to the Y component of the quaternion. - The value to assign to the Z component of the quaternion. - The value to assign to the W component of the quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Concatenates two quaternions. - The first quaternion rotation in the series. - The second quaternion rotation in the series. - A new quaternion representing the concatenation of the value1 rotation followed by the value2 rotation. - - - Returns the conjugate of a specified quaternion. - The quaternion. - A new quaternion that is the conjugate of value. - - - Creates a quaternion from a vector and an angle to rotate about the vector. - The vector to rotate around. - The angle, in radians, to rotate around the vector. - The newly created quaternion. - - - Creates a quaternion from the specified rotation matrix. - The rotation matrix. - The newly created quaternion. - - - Creates a new quaternion from the given yaw, pitch, and roll. - The yaw angle, in radians, around the Y axis. - The pitch angle, in radians, around the X axis. - The roll angle, in radians, around the Z axis. - The resulting quaternion. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Calculates the dot product of two quaternions. - The first quaternion. - The second quaternion. - The dot product. - - - Returns a value that indicates whether this instance and another quaternion are equal. - The other quaternion. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Gets a quaternion that represents no rotation. - A quaternion whose values are (0, 0, 0, 1). - - - Returns the inverse of a quaternion. - The quaternion. - The inverted quaternion. - - - Gets a value that indicates whether the current instance is the identity quaternion. - true if the current instance is the identity quaternion; otherwise, false. - - - Calculates the length of the quaternion. - The computed length of the quaternion. - - - Calculates the squared length of the quaternion. - The length squared of the quaternion. - - - Performs a linear interpolation between two quaternions based on a value that specifies the weighting of the second quaternion. - The first quaternion. - The second quaternion. - The relative weight of quaternion2 in the interpolation. - The interpolated quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Divides each component of a specified by its length. - The quaternion to normalize. - The normalized quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Returns a value that indicates whether two quaternions are equal. - The first quaternion to compare. - The second quaternion to compare. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether two quaternions are not equal. - The first quaternion to compare. - The second quaternion to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Interpolates between two quaternions, using spherical linear interpolation. - The first quaternion. - The second quaternion. - The relative weight of the second quaternion in the interpolation. - The interpolated quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this quaternion. - The string representation of this quaternion. - - - The rotation component of the quaternion. - - - - The X value of the vector component of the quaternion. - - - - The Y value of the vector component of the quaternion. - - - - The Z value of the vector component of the quaternion. - - - - Represents a single vector of a specified numeric type that is suitable for low-level optimization of parallel algorithms. - The vector type. T can be any primitive numeric type. - - - Creates a vector whose components are of a specified type. - The numeric type that defines the type of the components in the vector. - - - Creates a vector from a specified array. - A numeric array. - values is null. - - - Creates a vector from a specified array starting at a specified index position. - A numeric array. - The starting index position from which to create the vector. - values is null. - index is less than zero. -or- The length of values minus index is less than . - - - Copies the vector instance to a specified destination array. - The array to receive a copy of the vector values. - destination is null. - The number of elements in the current vector is greater than the number of elements available in the destination array. - - - Copies the vector instance to a specified destination array starting at a specified index position. - The array to receive a copy of the vector values. - The starting index in destination at which to begin the copy operation. - destination is null. - The number of elements in the current instance is greater than the number of elements available from startIndex to the end of the destination array. - index is less than zero or greater than the last index in destination. - - - Returns the number of elements stored in the vector. - The number of elements stored in the vector. - Access to the property getter via reflection is not supported. - - - Returns a value that indicates whether this instance is equal to a specified vector. - The vector to compare with this instance. - true if the current instance and other are equal; otherwise, false. - - - Returns a value that indicates whether this instance is equal to a specified object. - The object to compare with this instance. - true if the current instance and obj are equal; otherwise, false. The method returns false if obj is null, or if obj is a vector of a different type than the current instance. - - - Returns the hash code for this instance. - The hash code. - - - Gets the element at a specified index. - The index of the element to return. - The element at index index. - index is less than zero. -or- index is greater than or equal to . - - - Returns a vector containing all ones. - A vector containing all ones. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Returns a new vector by performing a bitwise And operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise And of left and right. - - - Returns a new vector by performing a bitwise Or operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise Or of the elements in left and right. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Returns a value that indicates whether each pair of elements in two specified vectors are equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a new vector by performing a bitwise XOr operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise XOr of the elements in left and right. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Returns a value that indicates whether any single pair of elements in the specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if any element pairs in left and right are equal. false if no element pairs are equal. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar value. - The source vector. - A scalar value. - The scaled vector. - - - Multiplies a vector by the given scalar. - The scalar value. - The source vector. - The scaled vector. - - - Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements. - The source vector. - The one's complement vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates a given vector. - The vector to negate. - The negated vector. - - - Returns the string representation of this vector using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Returns the string representation of this vector using default formatting. - The string representation of this vector. - - - Returns the string representation of this vector using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns a vector containing all zeroes. - A vector containing all zeroes. - - - Provides a collection of static convenience methods for creating, manipulating, combining, and converting generic vectors. - - - Returns a new vector whose elements are the absolute values of the given vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The absolute value vector. - - - Returns a new vector whose values are the sum of each pair of elements from two given vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The summed vector. - - - Returns a new vector by performing a bitwise And Not operation on each pair of corresponding elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a double-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of signed bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a single-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Returns a new vector by performing a bitwise And operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector by performing a bitwise Or operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Creates a new single-precision vector with elements selected between two specified single-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new double-precision vector with elements selected between two specified double-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new vector of a specified type with elements selected between two specified source vectors of the same type based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The vector type. T can be any primitive numeric type. - The new vector with elements selected based on the mask. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose values are the result of dividing the first vector's elements by the corresponding elements in the second vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The divided vector. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The dot product. - - - Returns a new integral vector whose elements signal whether the elements in two specified double-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified integral vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in two specified long integer vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified single-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in two specified vectors of the same type are equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether each pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left and right are equal; otherwise, false. - - - Returns a value that indicates whether any single pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element pair in left and right is equal; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are greater than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are greater than their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than their corresponding elements in the second vector of the same time. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the single-precision floating-point second vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than or equal to their corresponding elements in the second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than or equal to their corresponding elements in the second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than or equal to their corresponding elements in the second vector of the same type. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than or equal to all the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than or equal to the corresponding element in right; otherwise, false. - - - Gets a value that indicates whether vector operations are subject to hardware acceleration through JIT intrinsic support. - true if vector operations are subject to hardware acceleration; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision vector are less than their corresponding elements in a second single-precision vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in one vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all of the elements in the first vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than or equal to their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than or equal to their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less or equal to their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are less than or equal to their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than or equal to the corresponding element in right; otherwise, false. - - - Returns a new vector whose elements are the maximum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The maximum vector. - - - Returns a new vector whose elements are the minimum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The minimum vector. - - - Returns a new vector whose values are a scalar value multiplied by each of the values of a specified vector. - The scalar value. - The vector. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - Returns a new vector whose values are the product of each pair of elements in two specified vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The product vector. - - - Returns a new vector whose values are the values of a specified vector each multiplied by a scalar value. - The vector. - The scalar value. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose elements are the negation of the corresponding element in the specified vector. - The source vector. - The vector type. T can be any primitive numeric type. - The negated vector. - - - Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector whose elements are the square roots of a specified vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The square root vector. - - - Returns a new vector whose values are the difference between the elements in the second vector and their corresponding elements in the first vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The difference vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector by performing a bitwise exclusive Or (XOr) operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Represents a vector with two single-precision floating-point values. - - - Creates a new object whose two elements have the same value. - The value to assign to both elements. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of the vector. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 2 elements are equal to one. - A vector whose two elements are equal to one (that is, it returns the vector (1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 3x2 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 3x2 matrix. - The source vector. - The matrix. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0). - The vector (1,0). - - - Gets the vector (0,1). - The vector (0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - Returns a vector whose 2 elements are equal to zero. - A vector whose two elements are equal to zero (that is, it returns the vector (0,0). - - - Represents a vector with three single-precision floating-point values. - - - Creates a new object whose three elements have the same value. - The value to assign to all three elements. - - - Creates a new object from the specified object and the specified value. - The vector with two elements. - The additional value to assign to the field. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the cross product of two vectors. - The first vector. - The second vector. - The cross product. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 3 elements are equal to one. - A vector whose three elements are equal to one (that is, it returns the vector (1,1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0,0). - The vector (1,0,0). - - - Gets the vector (0,1,0). - The vector (0,1,0).. - - - Gets the vector (0,0,1). - The vector (0,0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 3 elements are equal to zero. - A vector whose three elements are equal to zero (that is, it returns the vector (0,0,0). - - - Represents a vector with four single-precision floating-point values. - - - Creates a new object whose four elements have the same value. - The value to assign to all four elements. - - - Constructs a new object from the specified object and a W component. - The vector to use for the X, Y, and Z components. - The W component. - - - Creates a new object from the specified object and a Z and a W component. - The vector to use for the X and Y components. - The Z component. - The W component. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 4 elements are equal to one. - Returns . - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a four-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a four-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a three-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a two-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a two-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a three-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Gets the vector (0,0,0,1). - The vector (0,0,0,1). - - - Gets the vector (1,0,0,0). - The vector (1,0,0,0). - - - Gets the vector (0,1,0,0). - The vector (0,1,0,0).. - - - Gets a vector whose 4 elements are equal to zero. - The vector (0,0,1,0). - - - The W component of the vector. - - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 4 elements are equal to zero. - A vector whose four elements are equal to zero (that is, it returns the vector (0,0,0,0). - - - \ No newline at end of file diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/netstandard2.0/System.Numerics.Vectors.dll b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/netstandard2.0/System.Numerics.Vectors.dll deleted file mode 100644 index ba0aa0cf6c56a5edd990cca24ab6588cb4d49269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38272 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 nH8*R}rZFpL?989k;?kV - - - System.Numerics.Vectors - - - -

    Represents a 3x2 matrix. - - - Creates a 3x2 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a rotation matrix using the given rotation in radians. - The amount of rotation, in radians. - The rotation matrix. - - - Creates a rotation matrix using the specified rotation in radians and a center point. - The amount of rotation, in radians. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified X and Y components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the specified scale with an offset from the specified center. - The uniform scale to use. - The center offset. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The center point. - The scaling matrix. - - - Creates a scaling matrix that scales uniformly with the given scale. - The uniform scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a scaling matrix from the specified vector scale with an offset from the specified center point. - The scale to use. - The center offset. - The scaling matrix. - - - Creates a skew matrix from the specified angles in radians. - The X angle, in radians. - The Y angle, in radians. - The skew matrix. - - - Creates a skew matrix from the specified angles in radians and a center point. - The X angle, in radians. - The Y angle, in radians. - The center point. - The skew matrix. - - - Creates a translation matrix from the specified 2-dimensional vector. - The translation position. - The translation matrix. - - - Creates a translation matrix from the specified X and Y components. - The X position. - The Y position. - The translation matrix. - - - Returns a value that indicates whether this instance and another 3x2 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Calculates the determinant for this matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - The multiplicative identify matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Represents a 4x4 matrix. - - - Creates a object from a specified object. - A 3x2 matrix. - - - Creates a 4x4 matrix from the specified components. - The value to assign to the first element in the first row. - The value to assign to the second element in the first row. - The value to assign to the third element in the first row. - The value to assign to the fourth element in the first row. - The value to assign to the first element in the second row. - The value to assign to the second element in the second row. - The value to assign to the third element in the second row. - The value to assign to the third element in the second row. - The value to assign to the first element in the third row. - The value to assign to the second element in the third row. - The value to assign to the third element in the third row. - The value to assign to the fourth element in the third row. - The value to assign to the first element in the fourth row. - The value to assign to the second element in the fourth row. - The value to assign to the third element in the fourth row. - The value to assign to the fourth element in the fourth row. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values of value1 and value2. - - - Creates a spherical billboard that rotates around a specified object position. - The position of the object that the billboard will rotate around. - The position of the camera. - The up vector of the camera. - The forward vector of the camera. - The created billboard. - - - Creates a cylindrical billboard that rotates around a specified axis. - The position of the object that the billboard will rotate around. - The position of the camera. - The axis to rotate the billboard around. - The forward vector of the camera. - The forward vector of the object. - The billboard matrix. - - - Creates a matrix that rotates around an arbitrary vector. - The axis to rotate around. - The angle to rotate around axis, in radians. - The rotation matrix. - - - Creates a rotation matrix from the specified Quaternion rotation value. - The source Quaternion. - The rotation matrix. - - - Creates a rotation matrix from the specified yaw, pitch, and roll. - The angle of rotation, in radians, around the Y axis. - The angle of rotation, in radians, around the X axis. - The angle of rotation, in radians, around the Z axis. - The rotation matrix. - - - Creates a view matrix. - The position of the camera. - The target towards which the camera is pointing. - The direction that is "up" from the camera's point of view. - The view matrix. - - - Creates an orthographic perspective matrix from the given view volume dimensions. - The width of the view volume. - The height of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a customized orthographic projection matrix. - The minimum X-value of the view volume. - The maximum X-value of the view volume. - The minimum Y-value of the view volume. - The maximum Y-value of the view volume. - The minimum Z-value of the view volume. - The maximum Z-value of the view volume. - The orthographic projection matrix. - - - Creates a perspective projection matrix from the given view volume dimensions. - The width of the view volume at the near view plane. - The height of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a perspective projection matrix based on a field of view, aspect ratio, and near and far view plane distances. - The field of view in the y direction, in radians. - The aspect ratio, defined as view space width divided by height. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - fieldOfView is less than or equal to zero. -or- fieldOfView is greater than or equal to . nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a customized perspective projection matrix. - The minimum x-value of the view volume at the near view plane. - The maximum x-value of the view volume at the near view plane. - The minimum y-value of the view volume at the near view plane. - The maximum y-value of the view volume at the near view plane. - The distance to the near view plane. - The distance to the far view plane. - The perspective projection matrix. - nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance. - - - Creates a matrix that reflects the coordinate system about a specified plane. - The plane about which to create a reflection. - A new matrix expressing the reflection. - - - Creates a matrix for rotating points around the X axis. - The amount, in radians, by which to rotate around the X axis. - The rotation matrix. - - - Creates a matrix for rotating points around the X axis from a center point. - The amount, in radians, by which to rotate around the X axis. - The center point. - The rotation matrix. - - - The amount, in radians, by which to rotate around the Y axis from a center point. - The amount, in radians, by which to rotate around the Y-axis. - The center point. - The rotation matrix. - - - Creates a matrix for rotating points around the Y axis. - The amount, in radians, by which to rotate around the Y-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis. - The amount, in radians, by which to rotate around the Z-axis. - The rotation matrix. - - - Creates a matrix for rotating points around the Z axis from a center point. - The amount, in radians, by which to rotate around the Z-axis. - The center point. - The rotation matrix. - - - Creates a scaling matrix from the specified vector scale. - The scale to use. - The scaling matrix. - - - Creates a uniform scaling matrix that scale equally on each axis. - The uniform scaling factor. - The scaling matrix. - - - Creates a scaling matrix with a center point. - The vector that contains the amount to scale on each axis. - The center point. - The scaling matrix. - - - Creates a uniform scaling matrix that scales equally on each axis with a center point. - The uniform scaling factor. - The center point. - The scaling matrix. - - - Creates a scaling matrix from the specified X, Y, and Z components. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The scaling matrix. - - - Creates a scaling matrix that is offset by a given center point. - The value to scale by on the X axis. - The value to scale by on the Y axis. - The value to scale by on the Z axis. - The center point. - The scaling matrix. - - - Creates a matrix that flattens geometry into a specified plane as if casting a shadow from a specified light source. - The direction from which the light that will cast the shadow is coming. - The plane onto which the new matrix should flatten geometry so as to cast a shadow. - A new matrix that can be used to flatten geometry onto the specified plane from the specified direction. - - - Creates a translation matrix from the specified 3-dimensional vector. - The amount to translate in each axis. - The translation matrix. - - - Creates a translation matrix from the specified X, Y, and Z components. - The amount to translate on the X axis. - The amount to translate on the Y axis. - The amount to translate on the Z axis. - The translation matrix. - - - Creates a world matrix with the specified parameters. - The position of the object. - The forward direction of the object. - The upward direction of the object. Its value is usually [0, 1, 0]. - The world matrix. - - - Attempts to extract the scale, translation, and rotation components from the given scale, rotation, or translation matrix. The return value indicates whether the operation succeeded. - The source matrix. - When this method returns, contains the scaling component of the transformation matrix if the operation succeeded. - When this method returns, contains the rotation component of the transformation matrix if the operation succeeded. - When the method returns, contains the translation component of the transformation matrix if the operation succeeded. - true if matrix was decomposed successfully; otherwise, false. - - - Returns a value that indicates whether this instance and another 4x4 matrix are equal. - The other matrix. - true if the two matrices are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Calculates the determinant of the current 4x4 matrix. - The determinant. - - - Returns the hash code for this instance. - The hash code. - - - Gets the multiplicative identity matrix. - Gets the multiplicative identity matrix. - - - Inverts the specified matrix. The return value indicates whether the operation succeeded. - The matrix to invert. - When this method returns, contains the inverted matrix if the operation succeeded. - true if matrix was converted successfully; otherwise, false. - - - Indicates whether the current matrix is the identity matrix. - true if the current matrix is the identity matrix; otherwise, false. - - - Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix. - The first matrix. - The second matrix. - The relative weighting of matrix2. - The interpolated matrix. - - - The first element of the first row. - - - - The second element of the first row. - - - - The third element of the first row. - - - - The fourth element of the first row. - - - - The first element of the second row. - - - - The second element of the second row. - - - - The third element of the second row. - - - - The fourth element of the second row. - - - - The first element of the third row. - - - - The second element of the third row. - - - - The third element of the third row. - - - - The fourth element of the third row. - - - - The first element of the fourth row. - - - - The second element of the fourth row. - - - - The third element of the fourth row. - - - - The fourth element of the fourth row. - - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Adds each element in one matrix with its corresponding element in a second matrix. - The first matrix. - The second matrix. - The matrix that contains the summed values. - - - Returns a value that indicates whether the specified matrices are equal. - The first matrix to compare. - The second matrix to care - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether the specified matrices are not equal. - The first matrix to compare. - The second matrix to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor. - The matrix to scale. - The scaling value to use. - The scaled matrix. - - - Returns the matrix that results from multiplying two matrices together. - The first matrix. - The second matrix. - The product matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Negates the specified matrix by multiplying all its values by -1. - The matrix to negate. - The negated matrix. - - - Subtracts each element in a second matrix from its corresponding element in a first matrix. - The first matrix. - The second matrix. - The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this matrix. - The string representation of this matrix. - - - Transforms the specified matrix by applying the specified Quaternion rotation. - The matrix to transform. - The rotation t apply. - The transformed matrix. - - - Gets or sets the translation component of this matrix. - The translation component of the current instance. - - - Transposes the rows and columns of a matrix. - The matrix to transpose. - The transposed matrix. - - - Represents a three-dimensional plane. - - - Creates a object from a specified four-dimensional vector. - A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin. - - - Creates a object from a specified normal and the distance along the normal from the origin. - The plane's normal vector. - The plane's distance from the origin along its normal vector. - - - Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal. - The X component of the normal. - The Y component of the normal. - The Z component of the normal. - The distance of the plane along its normal from the origin. - - - Creates a object that contains three specified points. - The first point defining the plane. - The second point defining the plane. - The third point defining the plane. - The plane containing the three points. - - - The distance of the plane along its normal from the origin. - - - - Calculates the dot product of a plane and a 4-dimensional vector. - The plane. - The four-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the normal vector of this plane plus the distance () value of the plane. - The plane. - The 3-dimensional vector. - The dot product. - - - Returns the dot product of a specified three-dimensional vector and the vector of this plane. - The plane. - The three-dimensional vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns a value that indicates whether this instance and another plane object are equal. - The other plane. - true if the two planes are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - The normal vector of the plane. - - - - Creates a new object whose normal vector is the source plane's normal vector normalized. - The source plane. - The normalized plane. - - - Returns a value that indicates whether two planes are equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are equal; otherwise, false. - - - Returns a value that indicates whether two planes are not equal. - The first plane to compare. - The second plane to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the string representation of this plane object. - A string that represents this object. - - - Transforms a normalized plane by a 4x4 matrix. - The normalized plane to transform. - The transformation matrix to apply to plane. - The transformed plane. - - - Transforms a normalized plane by a Quaternion rotation. - The normalized plane to transform. - The Quaternion rotation to apply to the plane. - A new plane that results from applying the Quaternion rotation. - - - Represents a vector that is used to encode three-dimensional physical rotations. - - - Creates a quaternion from the specified vector and rotation parts. - The vector part of the quaternion. - The rotation part of the quaternion. - - - Constructs a quaternion from the specified components. - The value to assign to the X component of the quaternion. - The value to assign to the Y component of the quaternion. - The value to assign to the Z component of the quaternion. - The value to assign to the W component of the quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Concatenates two quaternions. - The first quaternion rotation in the series. - The second quaternion rotation in the series. - A new quaternion representing the concatenation of the value1 rotation followed by the value2 rotation. - - - Returns the conjugate of a specified quaternion. - The quaternion. - A new quaternion that is the conjugate of value. - - - Creates a quaternion from a vector and an angle to rotate about the vector. - The vector to rotate around. - The angle, in radians, to rotate around the vector. - The newly created quaternion. - - - Creates a quaternion from the specified rotation matrix. - The rotation matrix. - The newly created quaternion. - - - Creates a new quaternion from the given yaw, pitch, and roll. - The yaw angle, in radians, around the Y axis. - The pitch angle, in radians, around the X axis. - The roll angle, in radians, around the Z axis. - The resulting quaternion. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Calculates the dot product of two quaternions. - The first quaternion. - The second quaternion. - The dot product. - - - Returns a value that indicates whether this instance and another quaternion are equal. - The other quaternion. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Gets a quaternion that represents no rotation. - A quaternion whose values are (0, 0, 0, 1). - - - Returns the inverse of a quaternion. - The quaternion. - The inverted quaternion. - - - Gets a value that indicates whether the current instance is the identity quaternion. - true if the current instance is the identity quaternion; otherwise, false. - - - Calculates the length of the quaternion. - The computed length of the quaternion. - - - Calculates the squared length of the quaternion. - The length squared of the quaternion. - - - Performs a linear interpolation between two quaternions based on a value that specifies the weighting of the second quaternion. - The first quaternion. - The second quaternion. - The relative weight of quaternion2 in the interpolation. - The interpolated quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Divides each component of a specified by its length. - The quaternion to normalize. - The normalized quaternion. - - - Adds each element in one quaternion with its corresponding element in a second quaternion. - The first quaternion. - The second quaternion. - The quaternion that contains the summed values of value1 and value2. - - - Divides one quaternion by a second quaternion. - The dividend. - The divisor. - The quaternion that results from dividing value1 by value2. - - - Returns a value that indicates whether two quaternions are equal. - The first quaternion to compare. - The second quaternion to compare. - true if the two quaternions are equal; otherwise, false. - - - Returns a value that indicates whether two quaternions are not equal. - The first quaternion to compare. - The second quaternion to compare. - true if value1 and value2 are not equal; otherwise, false. - - - Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor. - The source quaternion. - The scalar value. - The scaled quaternion. - - - Returns the quaternion that results from multiplying two quaternions together. - The first quaternion. - The second quaternion. - The product quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Reverses the sign of each component of the quaternion. - The quaternion to negate. - The negated quaternion. - - - Interpolates between two quaternions, using spherical linear interpolation. - The first quaternion. - The second quaternion. - The relative weight of the second quaternion in the interpolation. - The interpolated quaternion. - - - Subtracts each element in a second quaternion from its corresponding element in a first quaternion. - The first quaternion. - The second quaternion. - The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1. - - - Returns a string that represents this quaternion. - The string representation of this quaternion. - - - The rotation component of the quaternion. - - - - The X value of the vector component of the quaternion. - - - - The Y value of the vector component of the quaternion. - - - - The Z value of the vector component of the quaternion. - - - - Represents a single vector of a specified numeric type that is suitable for low-level optimization of parallel algorithms. - The vector type. T can be any primitive numeric type. - - - Creates a vector whose components are of a specified type. - The numeric type that defines the type of the components in the vector. - - - Creates a vector from a specified array. - A numeric array. - values is null. - - - Creates a vector from a specified array starting at a specified index position. - A numeric array. - The starting index position from which to create the vector. - values is null. - index is less than zero. -or- The length of values minus index is less than . - - - Copies the vector instance to a specified destination array. - The array to receive a copy of the vector values. - destination is null. - The number of elements in the current vector is greater than the number of elements available in the destination array. - - - Copies the vector instance to a specified destination array starting at a specified index position. - The array to receive a copy of the vector values. - The starting index in destination at which to begin the copy operation. - destination is null. - The number of elements in the current instance is greater than the number of elements available from startIndex to the end of the destination array. - index is less than zero or greater than the last index in destination. - - - Returns the number of elements stored in the vector. - The number of elements stored in the vector. - Access to the property getter via reflection is not supported. - - - Returns a value that indicates whether this instance is equal to a specified vector. - The vector to compare with this instance. - true if the current instance and other are equal; otherwise, false. - - - Returns a value that indicates whether this instance is equal to a specified object. - The object to compare with this instance. - true if the current instance and obj are equal; otherwise, false. The method returns false if obj is null, or if obj is a vector of a different type than the current instance. - - - Returns the hash code for this instance. - The hash code. - - - Gets the element at a specified index. - The index of the element to return. - The element at index index. - index is less than zero. -or- index is greater than or equal to . - - - Returns a vector containing all ones. - A vector containing all ones. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Returns a new vector by performing a bitwise And operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise And of left and right. - - - Returns a new vector by performing a bitwise Or operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise Or of the elements in left and right. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Returns a value that indicates whether each pair of elements in two specified vectors are equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a new vector by performing a bitwise XOr operation on each of the elements in two vectors. - The first vector. - The second vector. - The vector that results from the bitwise XOr of the elements in left and right. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Reinterprets the bits of the specified vector into a vector of type . - The vector to reinterpret. - The reinterpreted vector. - - - Returns a value that indicates whether any single pair of elements in the specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if any element pairs in left and right are equal. false if no element pairs are equal. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar value. - The source vector. - A scalar value. - The scaled vector. - - - Multiplies a vector by the given scalar. - The scalar value. - The source vector. - The scaled vector. - - - Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements. - The source vector. - The one's complement vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates a given vector. - The vector to negate. - The negated vector. - - - Returns the string representation of this vector using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Returns the string representation of this vector using default formatting. - The string representation of this vector. - - - Returns the string representation of this vector using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns a vector containing all zeroes. - A vector containing all zeroes. - - - Provides a collection of static convenience methods for creating, manipulating, combining, and converting generic vectors. - - - Returns a new vector whose elements are the absolute values of the given vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The absolute value vector. - - - Returns a new vector whose values are the sum of each pair of elements from two given vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The summed vector. - - - Returns a new vector by performing a bitwise And Not operation on each pair of corresponding elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a double-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of signed bytes. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a single-precision floating-point vector. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned 16-bit integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Reinterprets the bits of a specified vector into those of a vector of unsigned long integers. - The source vector. - The vector type. T can be any primitive numeric type. - The reinterpreted vector. - - - Returns a new vector by performing a bitwise And operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector by performing a bitwise Or operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Creates a new single-precision vector with elements selected between two specified single-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new double-precision vector with elements selected between two specified double-precision source vectors based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The new vector with elements selected based on the mask. - - - Creates a new vector of a specified type with elements selected between two specified source vectors of the same type based on an integral mask vector. - The integral mask vector used to drive selection. - The first source vector. - The second source vector. - The vector type. T can be any primitive numeric type. - The new vector with elements selected based on the mask. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose values are the result of dividing the first vector's elements by the corresponding elements in the second vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The divided vector. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The dot product. - - - Returns a new integral vector whose elements signal whether the elements in two specified double-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified integral vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in two specified long integer vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in two specified single-precision vectors are equal. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in two specified vectors of the same type are equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether each pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left and right are equal; otherwise, false. - - - Returns a value that indicates whether any single pair of elements in the given vectors is equal. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element pair in left and right is equal; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are greater than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are greater than their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than their corresponding elements in the second vector of the same time. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the single-precision floating-point second vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than or equal to their corresponding elements in the second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than or equal to their corresponding elements in the second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than or equal to their corresponding elements in the second vector of the same type. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are greater than or equal to all the corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all elements in left are greater than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is greater than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is greater than or equal to the corresponding element in right; otherwise, false. - - - Gets a value that indicates whether vector operations are subject to hardware acceleration through JIT intrinsic support. - true if vector operations are subject to hardware acceleration; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less than their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision vector are less than their corresponding elements in a second single-precision vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector of a specified type whose elements signal whether the elements in one vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all of the elements in the first vector are less than their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than the corresponding element in right; otherwise, false. - - - Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than or equal to their corresponding elements in a second double-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new integral vector whose elements signal whether the elements in one integral vector are less than or equal to their corresponding elements in a second integral vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less or equal to their corresponding elements in a second long integer vector. - The first vector to compare. - The second vector to compare. - The resulting long integer vector. - - - Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are less than or equal to their corresponding elements in a second single-precision floating-point vector. - The first vector to compare. - The second vector to compare. - The resulting integral vector. - - - Returns a new vector whose elements signal whether the elements in one vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a value that indicates whether all elements in the first vector are less than or equal to their corresponding elements in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if all of the elements in left are less than or equal to the corresponding elements in right; otherwise, false. - - - Returns a value that indicates whether any element in the first vector is less than or equal to the corresponding element in the second vector. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - true if any element in left is less than or equal to the corresponding element in right; otherwise, false. - - - Returns a new vector whose elements are the maximum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The maximum vector. - - - Returns a new vector whose elements are the minimum of each pair of elements in the two given vectors. - The first vector to compare. - The second vector to compare. - The vector type. T can be any primitive numeric type. - The minimum vector. - - - Returns a new vector whose values are a scalar value multiplied by each of the values of a specified vector. - The scalar value. - The vector. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - Returns a new vector whose values are the product of each pair of elements in two specified vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The product vector. - - - Returns a new vector whose values are the values of a specified vector each multiplied by a scalar value. - The vector. - The scalar value. - The vector type. T can be any primitive numeric type. - The scaled vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector whose elements are the negation of the corresponding element in the specified vector. - The source vector. - The vector type. T can be any primitive numeric type. - The negated vector. - - - Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Returns a new vector whose elements are the square roots of a specified vector's elements. - The source vector. - The vector type. T can be any primitive numeric type. - The square root vector. - - - Returns a new vector whose values are the difference between the elements in the second vector and their corresponding elements in the first vector. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The difference vector. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Returns a new vector by performing a bitwise exclusive Or (XOr) operation on each pair of elements in two vectors. - The first vector. - The second vector. - The vector type. T can be any primitive numeric type. - The resulting vector. - - - Represents a vector with two single-precision floating-point values. - - - Creates a new object whose two elements have the same value. - The value to assign to both elements. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of the vector. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 2 elements are equal to one. - A vector whose two elements are equal to one (that is, it returns the vector (1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 3x2 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 3x2 matrix. - The source vector. - The matrix. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0). - The vector (1,0). - - - Gets the vector (0,1). - The vector (0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - Returns a vector whose 2 elements are equal to zero. - A vector whose two elements are equal to zero (that is, it returns the vector (0,0). - - - Represents a vector with three single-precision floating-point values. - - - Creates a new object whose three elements have the same value. - The value to assign to all three elements. - - - Creates a new object from the specified object and the specified value. - The vector with two elements. - The additional value to assign to the field. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the cross product of two vectors. - The first vector. - The second vector. - The cross product. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 3 elements are equal to one. - A vector whose three elements are equal to one (that is, it returns the vector (1,1,1). - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns the reflection of a vector off a surface that has the specified normal. - The source vector. - The normal of the surface being reflected off. - The reflected vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a vector normal by the given 4x4 matrix. - The source vector. - The matrix. - The transformed vector. - - - Gets the vector (1,0,0). - The vector (1,0,0). - - - Gets the vector (0,1,0). - The vector (0,1,0).. - - - Gets the vector (0,0,1). - The vector (0,0,1). - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 3 elements are equal to zero. - A vector whose three elements are equal to zero (that is, it returns the vector (0,0,0). - - - Represents a vector with four single-precision floating-point values. - - - Creates a new object whose four elements have the same value. - The value to assign to all four elements. - - - Constructs a new object from the specified object and a W component. - The vector to use for the X, Y, and Z components. - The W component. - - - Creates a new object from the specified object and a Z and a W component. - The vector to use for the X and Y components. - The Z component. - The W component. - - - Creates a vector whose elements have the specified values. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - The value to assign to the field. - - - Returns a vector whose elements are the absolute values of each of the specified vector's elements. - A vector. - The absolute value vector. - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Restricts a vector between a minimum and a maximum value. - The vector to restrict. - The minimum value. - The maximum value. - The restricted vector. - - - Copies the elements of the vector to a specified array. - The destination array. - array is null. - The number of elements in the current instance is greater than in the array. - array is multidimensional. - - - Copies the elements of the vector to a specified array starting at a specified index position. - The destination array. - The index at which to copy the first element of the vector. - array is null. - The number of elements in the current instance is greater than in the array. - index is less than zero. -or- index is greater than or equal to the array length. - array is multidimensional. - - - Computes the Euclidean distance between the two given points. - The first point. - The second point. - The distance. - - - Returns the Euclidean distance squared between two specified points. - The first point. - The second point. - The distance squared. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector resulting from the division. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The vector that results from the division. - - - Returns the dot product of two vectors. - The first vector. - The second vector. - The dot product. - - - Returns a value that indicates whether this instance and another vector are equal. - The other vector. - true if the two vectors are equal; otherwise, false. - - - Returns a value that indicates whether this instance and a specified object are equal. - The object to compare with the current instance. - true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`. - - - Returns the hash code for this instance. - The hash code. - - - Returns the length of this vector object. - The vector's length. - - - Returns the length of the vector squared. - The vector's length squared. - - - Performs a linear interpolation between two vectors based on the given weighting. - The first vector. - The second vector. - A value between 0 and 1 that indicates the weight of value2. - The interpolated vector. - - - Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The maximized vector. - - - Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors. - The first vector. - The second vector. - The minimized vector. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiplies a vector by a specified scalar. - The vector to multiply. - The scalar value. - The scaled vector. - - - Multiplies a scalar value by a specified vector. - The scaled value. - The vector. - The scaled vector. - - - Negates a specified vector. - The vector to negate. - The negated vector. - - - Returns a vector with the same direction as the specified vector, but with a length of one. - The vector to normalize. - The normalized vector. - - - Gets a vector whose 4 elements are equal to one. - Returns . - - - Adds two vectors together. - The first vector to add. - The second vector to add. - The summed vector. - - - Divides the first vector by the second. - The first vector. - The second vector. - The vector that results from dividing left by right. - - - Divides the specified vector by a specified scalar value. - The vector. - The scalar value. - The result of the division. - - - Returns a value that indicates whether each pair of elements in two specified vectors is equal. - The first vector to compare. - The second vector to compare. - true if left and right are equal; otherwise, false. - - - Returns a value that indicates whether two specified vectors are not equal. - The first vector to compare. - The second vector to compare. - true if left and right are not equal; otherwise, false. - - - Multiplies two vectors together. - The first vector. - The second vector. - The product vector. - - - Multiples the specified vector by the specified scalar value. - The vector. - The scalar value. - The scaled vector. - - - Multiples the scalar value by the specified vector. - The vector. - The scalar value. - The scaled vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The vector that results from subtracting right from left. - - - Negates the specified vector. - The vector to negate. - The negated vector. - - - Returns a vector whose elements are the square root of each of a specified vector's elements. - A vector. - The square root vector. - - - Subtracts the second vector from the first. - The first vector. - The second vector. - The difference vector. - - - Returns the string representation of the current instance using default formatting. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements. - A or that defines the format of individual elements. - The string representation of the current instance. - - - Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting. - A or that defines the format of individual elements. - A format provider that supplies culture-specific formatting information. - The string representation of the current instance. - - - Transforms a four-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a four-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a three-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a two-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Transforms a two-dimensional vector by the specified Quaternion rotation value. - The vector to rotate. - The rotation to apply. - The transformed vector. - - - Transforms a three-dimensional vector by a specified 4x4 matrix. - The vector to transform. - The transformation matrix. - The transformed vector. - - - Gets the vector (0,0,0,1). - The vector (0,0,0,1). - - - Gets the vector (1,0,0,0). - The vector (1,0,0,0). - - - Gets the vector (0,1,0,0). - The vector (0,1,0,0).. - - - Gets a vector whose 4 elements are equal to zero. - The vector (0,0,1,0). - - - The W component of the vector. - - - - The X component of the vector. - - - - The Y component of the vector. - - - - The Z component of the vector. - - - - Gets a vector whose 4 elements are equal to zero. - A vector whose four elements are equal to zero (that is, it returns the vector (0,0,0,0). - - - \ No newline at end of file diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/xamarinios10/_._ b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/xamarinios10/_._ deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/xamarinmac20/_._ b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/xamarinmac20/_._ deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/xamarintvos10/_._ b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/xamarintvos10/_._ deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/xamarinwatchos10/_._ b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/ref/xamarinwatchos10/_._ deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/useSharedDesignerContext.txt b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/useSharedDesignerContext.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/version.txt b/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/version.txt deleted file mode 100644 index 1ca86a08e..000000000 --- a/Learun.Framework.Ultimate V7/packages/System.Numerics.Vectors.4.4.0/version.txt +++ /dev/null @@ -1 +0,0 @@ -8321c729934c0f8be754953439b88e6e1c120c24