Daily update on 20250316-095544 by Nitload Youmu. Additional Message : Linear math inmprovement
Signed-off-by: Nitload <YoumuLiu_NSI@whv0t.onmicrosoft.com>
This commit is contained in:
@@ -47,14 +47,14 @@ namespace StgSharp.Geometries
|
||||
internal Matrix32 axis;
|
||||
|
||||
/// <summary>
|
||||
/// The origin of this coordinate.
|
||||
/// The _origin of this coordinate.
|
||||
/// </summary>
|
||||
public Vec3 origin;
|
||||
|
||||
public PartialPlainCoordinate(
|
||||
Vec3 origin,
|
||||
Vec3 horiziontial,
|
||||
Vec3 vertical )
|
||||
Vec3 origin,
|
||||
Vec3 horiziontial,
|
||||
Vec3 vertical )
|
||||
{
|
||||
this.origin = origin;
|
||||
axis = new Matrix32();
|
||||
|
||||
@@ -38,30 +38,22 @@ namespace StgSharp.Geometries
|
||||
{
|
||||
|
||||
internal readonly float d = -1;
|
||||
internal Vec3 origin;
|
||||
internal Vec3 _origin;
|
||||
|
||||
internal Vec3 plainParameter;
|
||||
internal Vec3 vec1;
|
||||
internal Vec3 vec2;
|
||||
|
||||
internal Plain( Vector4 origin, Vector4 p1, Vector4 p2 )
|
||||
{
|
||||
this.origin = new Vec3( origin );
|
||||
|
||||
vec1 = new Vec3( p1 - origin );
|
||||
vec2 = new Vec3( p2 - origin );
|
||||
}
|
||||
|
||||
public Plain( Vec3 o, Vec3 v1, Vec3 v2 )
|
||||
{
|
||||
this.origin = o;
|
||||
this.vec1 = v1 - ( v2 * ( v1.Y / v2.Y ) ); //计算平面在xz平面上的方向投影
|
||||
this.vec2 = v2 - ( vec1 * ( v2.X / v1.X ) ); //计算平面在yz平面上的方向投影
|
||||
this._origin = o;
|
||||
this.vec1 = v1 - ( v2 * ( v1.Y / v2.Y ) ); //xz
|
||||
this.vec2 = v2 - ( vec1 * ( v2.X / v1.X ) ); //yz
|
||||
|
||||
//|origin|-k1*|vec1|-k2*|vec2|计算plainParameter.Z;
|
||||
plainParameter.Z = origin.Z - ( vec1.Z * ( origin.X / vec1.X ) ) - ( vec2.Z * ( origin.Y / vec2.Y ) );
|
||||
//|_origin|-k1*|vec1|-k2*|vec2| --> plainParameter.Z;
|
||||
plainParameter.Z = _origin.Z - ( vec1.Z * ( _origin.X / vec1.X ) ) - ( vec2.Z * ( _origin.Y / vec2.Y ) );
|
||||
|
||||
//根据plainParameter.Z和对应的方向矢量计算plainParameter.X和plainParameter.Y
|
||||
//plainParameter.Z -> plainParameter.X, plainParameter.Y
|
||||
plainParameter.X = vec1.X * ( vec1.Z / plainParameter.Z );
|
||||
plainParameter.Y = vec2.Y * ( vec2.Z / plainParameter.Z );
|
||||
|
||||
@@ -77,13 +69,13 @@ namespace StgSharp.Geometries
|
||||
Vec3 v2 = p3.Coord - origin;
|
||||
|
||||
|
||||
vec1 = v1 - ( v2 * ( v1.Y / v2.Y ) ); //计算平面在xz平面上的方向投影
|
||||
vec2 = v2 - ( vec1 * ( v2.X / v1.X ) ); //计算平面在yz平面上的方向投影
|
||||
vec1 = v1 - ( v2 * ( v1.Y / v2.Y ) ); //xz
|
||||
vec2 = v2 - ( vec1 * ( v2.X / v1.X ) ); //yz
|
||||
|
||||
//|origin|-k1*|vec1|-k2*|vec2|计算plainParameter.Z;
|
||||
//|_origin|-k1*|vec1|-k2*|vec2| --> plainParameter.Z;
|
||||
plainParameter.Z = origin.Z - ( vec1.Z * ( origin.X / vec1.X ) ) - ( vec2.Z * ( origin.Y / vec2.Y ) );
|
||||
|
||||
//根据plainParameter.Z和对应的方向矢量计算plainParameter.X和plainParameter.Y
|
||||
//plainParameter.Z --> plainParameter.X, plainParameter.Y
|
||||
plainParameter.X = vec1.X * ( vec1.Z / plainParameter.Z );
|
||||
plainParameter.Y = vec2.Y * ( vec2.Z / plainParameter.Z );
|
||||
|
||||
|
||||
@@ -48,24 +48,24 @@ namespace StgSharp.Geometries
|
||||
}
|
||||
|
||||
public Polygon6(
|
||||
PlainCoordinate coordination,
|
||||
Vec2 vert0,
|
||||
Vec2 vert1,
|
||||
Vec2 vert2,
|
||||
Vec2 vert3,
|
||||
Vec2 vert4,
|
||||
Vec2 vert5,
|
||||
Vec2 vert6 )
|
||||
PlainCoordinate coordination,
|
||||
Vec2 vert0,
|
||||
Vec2 vert1,
|
||||
Vec2 vert2,
|
||||
Vec2 vert3,
|
||||
Vec2 vert4,
|
||||
Vec2 vert5,
|
||||
Vec2 vert6 )
|
||||
: base( coordination )
|
||||
{
|
||||
vertexMat = new Vec4[6];
|
||||
vertexMat[ 0 ].vec = vert0.vec;
|
||||
vertexMat[ 1 ].vec = vert1.vec;
|
||||
vertexMat[ 2 ].vec = vert2.vec;
|
||||
vertexMat[ 3 ].vec = vert3.vec;
|
||||
vertexMat[ 4 ].vec = vert4.vec;
|
||||
vertexMat[ 5 ].vec = vert5.vec;
|
||||
vertexMat[ 6 ].vec = vert6.vec;
|
||||
vertexMat[ 0 ].reg = vert0.reg;
|
||||
vertexMat[ 1 ].reg = vert1.reg;
|
||||
vertexMat[ 2 ].reg = vert2.reg;
|
||||
vertexMat[ 3 ].reg = vert3.reg;
|
||||
vertexMat[ 4 ].reg = vert4.reg;
|
||||
vertexMat[ 5 ].reg = vert5.reg;
|
||||
vertexMat[ 6 ].reg = vert6.reg;
|
||||
}
|
||||
|
||||
public override ReadOnlySpan<int> VertexIndices => Indices;
|
||||
|
||||
Reference in New Issue
Block a user