Исправления в матрицах 2x3 и 3x2 / Several fixes in 2x3 and 3x2 matrixes
This commit is contained in:
parent
3ba55c7524
commit
301cabe8de
22 changed files with 3805 additions and 3744 deletions
|
|
@ -1,14 +1,14 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Geometry\Geometry.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Geometry\Geometry.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -1,80 +1,80 @@
|
|||
// See https://aka.ms/new-console-template for more information
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using Geometry;
|
||||
|
||||
public static class Program
|
||||
{
|
||||
private static SPVersor[] AllocateVersors(int amount)
|
||||
{
|
||||
return new SPVersor[amount];
|
||||
}
|
||||
|
||||
private static SPVersor[] MakeZeroVersors(int amount)
|
||||
{
|
||||
SPVersor[] versors = AllocateVersors(amount);
|
||||
|
||||
for (int i = 0; i < amount; i++)
|
||||
{
|
||||
versors[i] = SPVersor.IDLE;
|
||||
}
|
||||
|
||||
return versors;
|
||||
}
|
||||
|
||||
private static SPVersor[] MakeRandomVersors(int amount)
|
||||
{
|
||||
Random randomizer = new Random(Environment.TickCount);
|
||||
|
||||
SPVersor[] versors = AllocateVersors(amount);
|
||||
|
||||
for (int i = 0; i < amount; i++)
|
||||
{
|
||||
versors[i] = new SPVersor(
|
||||
randomizer.NextSingle(),
|
||||
randomizer.NextSingle(),
|
||||
randomizer.NextSingle(),
|
||||
randomizer.NextSingle()
|
||||
);
|
||||
}
|
||||
|
||||
return versors;
|
||||
}
|
||||
|
||||
private static void PrintVersor(in SPVersor versor)
|
||||
{
|
||||
Console.WriteLine("({0}, {1}, {2}, {3}) / {4:E}", versor.GetScalar(), versor.GetX1(), versor.GetX2(), versor.GetX3(), versor.GetCorrector() - 1.0f);
|
||||
}
|
||||
|
||||
public static int Main()
|
||||
{
|
||||
int amount = 1000000;
|
||||
|
||||
SPVersor[] versors1 = MakeRandomVersors(amount);
|
||||
SPVersor[] versors2 = MakeRandomVersors(amount);
|
||||
SPVersor[] results = MakeZeroVersors(amount);
|
||||
|
||||
long start, end;
|
||||
|
||||
start = Environment.TickCount64;
|
||||
|
||||
for (int j = 0; j < 1000; j++)
|
||||
{
|
||||
for (int i = 0; i < amount; i++)
|
||||
{
|
||||
SPVersor.Combine(versors1[i], versors2[i], out results[i]);
|
||||
}
|
||||
}
|
||||
|
||||
end = Environment.TickCount64;
|
||||
|
||||
Console.WriteLine("Time: {0}", end - start);
|
||||
|
||||
PrintVersor(versors1[10]);
|
||||
PrintVersor(versors2[10]);
|
||||
PrintVersor(results[10]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
// See https://aka.ms/new-console-template for more information
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using Geometry;
|
||||
|
||||
public static class Program
|
||||
{
|
||||
private static SPVersor[] AllocateVersors(int amount)
|
||||
{
|
||||
return new SPVersor[amount];
|
||||
}
|
||||
|
||||
private static SPVersor[] MakeZeroVersors(int amount)
|
||||
{
|
||||
SPVersor[] versors = AllocateVersors(amount);
|
||||
|
||||
for (int i = 0; i < amount; i++)
|
||||
{
|
||||
versors[i] = SPVersor.IDLE;
|
||||
}
|
||||
|
||||
return versors;
|
||||
}
|
||||
|
||||
private static SPVersor[] MakeRandomVersors(int amount)
|
||||
{
|
||||
Random randomizer = new Random(Environment.TickCount);
|
||||
|
||||
SPVersor[] versors = AllocateVersors(amount);
|
||||
|
||||
for (int i = 0; i < amount; i++)
|
||||
{
|
||||
versors[i] = new SPVersor(
|
||||
randomizer.NextSingle(),
|
||||
randomizer.NextSingle(),
|
||||
randomizer.NextSingle(),
|
||||
randomizer.NextSingle()
|
||||
);
|
||||
}
|
||||
|
||||
return versors;
|
||||
}
|
||||
|
||||
private static void PrintVersor(in SPVersor versor)
|
||||
{
|
||||
Console.WriteLine("({0}, {1}, {2}, {3}) / {4:E}", versor.GetScalar(), versor.GetX1(), versor.GetX2(), versor.GetX3(), versor.GetCorrector() - 1.0f);
|
||||
}
|
||||
|
||||
public static int Main()
|
||||
{
|
||||
int amount = 1000000;
|
||||
|
||||
SPVersor[] versors1 = MakeRandomVersors(amount);
|
||||
SPVersor[] versors2 = MakeRandomVersors(amount);
|
||||
SPVersor[] results = MakeZeroVersors(amount);
|
||||
|
||||
long start, end;
|
||||
|
||||
start = Environment.TickCount64;
|
||||
|
||||
for (int j = 0; j < 1000; j++)
|
||||
{
|
||||
for (int i = 0; i < amount; i++)
|
||||
{
|
||||
SPVersor.Combine(versors1[i], versors2[i], out results[i]);
|
||||
}
|
||||
}
|
||||
|
||||
end = Environment.TickCount64;
|
||||
|
||||
Console.WriteLine("Time: {0}", end - start);
|
||||
|
||||
PrintVersor(versors1[10]);
|
||||
PrintVersor(versors2[10]);
|
||||
PrintVersor(results[10]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue