Daily update on 20230803 by nitload youmu, problem of parameter displacement solved, rewriting other linear math

This commit is contained in:
Nitload
2023-08-03 22:46:16 +08:00
parent 194d65edf6
commit aae7e0292c
105 changed files with 13858 additions and 11394 deletions
@@ -18,11 +18,11 @@ namespace StgSharp.Geometries
public override Point RefPoint03 => endPoint;
public virtual vec3d MoveCenter(uint tick) => movCenterOperation.Invoke(tick);
public virtual Vec3d MoveCenter(uint tick) => movCenterOperation.Invoke(tick);
public virtual vec3d MovBegin(uint tick) => movBeginOperation.Invoke(tick);
public virtual Vec3d MovBegin(uint tick) => movBeginOperation.Invoke(tick);
public virtual vec3d MovEnd(uint tick) => movEndOperation.Invoke(tick);
public virtual Vec3d MovEnd(uint tick) => movEndOperation.Invoke(tick);
internal override void OnRender(uint tick)
{
@@ -19,11 +19,11 @@ namespace StgSharp.Geometries
public override Point RefPoint03 => pointOnPlain;
public virtual vec3d MoveCenter(uint tick) => movCenterOperation.Invoke(tick);
public virtual Vec3d MoveCenter(uint tick) => movCenterOperation.Invoke(tick);
public virtual vec3d UpdateRadius(uint tick) => movBeginOperation.Invoke(tick);
public virtual Vec3d UpdateRadius(uint tick) => movBeginOperation.Invoke(tick);
public virtual vec3d UpdatePlain(uint tick) => movEndOperation.Invoke(tick);
public virtual Vec3d UpdatePlain(uint tick) => movEndOperation.Invoke(tick);
public override Plain GetPlain()
{
@@ -7,13 +7,13 @@ namespace StgSharp.Geometries
/// </summary>
/// <param name="tick"></param>
/// <returns>表示位移量的三维矢量</returns>
public delegate vec3d GetLocationHandler(uint tick);
public delegate Vec3d GetLocationHandler(uint tick);
public static unsafe class GeometryOperation
{
public static vec3d DefualtMotion(uint tick)
public static Vec3d DefualtMotion(uint tick)
{
return default(vec3d);
return default(Vec3d);
}
}
@@ -24,11 +24,11 @@ namespace StgSharp.Geometries
public Line() { }
//计算线起点的方法,通过对线的派生的重写实现功能
public virtual vec3d MoveBeginPoint(uint tick)
public virtual Vec3d MoveBeginPoint(uint tick)
=> movBegin.Invoke(tick);
//计算线重点的方法,通过对线的派生的重写实现功能
public virtual vec3d MoveEndPoint(uint tick)
public virtual Vec3d MoveEndPoint(uint tick)
=> movEnd.Invoke(tick);
internal override void OnRender(uint tick)
@@ -17,7 +17,7 @@ namespace StgSharp.Geometries
public GetLocationHandler MovVertex01Operation { get { return movVertex01Operation; } }
public GetLocationHandler MovVertex02Operation { get { return movVertex02Operation; } }
public virtual vec3d MovCenter(uint tick)
public virtual Vec3d MovCenter(uint tick)
{
return movCenterOperation.Invoke(tick);
}
@@ -28,12 +28,12 @@ namespace StgSharp.Geometries
/// <param name="tick">当前游戏刻</param>
/// <returns></returns>
/// <exception cref="UnusedVertexException">几何体过定义</exception>
public sealed override vec3d MovVertex03(uint tick)
public sealed override Vec3d MovVertex03(uint tick)
{
throw new UnusedVertexException();
}
public sealed override vec3d MovVertex04(uint tick)
public sealed override Vec3d MovVertex04(uint tick)
{
throw new UnusedVertexException();
}
@@ -4,14 +4,14 @@ namespace StgSharp.Geometries
{
public unsafe class Plain
{
internal vec3d origin;
internal vec3d vec1;
internal vec3d vec2;
internal Vec3d origin;
internal Vec3d vec1;
internal Vec3d vec2;
internal vec3d plainParameter;
internal Vec3d plainParameter;
internal readonly float d = -1;
public Plain(vec3d o, vec3d v1, vec3d v2)
public Plain(Vec3d o, Vec3d v1, Vec3d v2)
{
this.origin = o;
this.vec1 = v1 - v2 * (v1.Y / v2.Y); //计算平面在xz平面上的方向投影
@@ -30,9 +30,9 @@ namespace StgSharp.Geometries
public Plain(Point p1, Point p2, Point p3)
{
vec3d origin = p1.Position;
vec3d v1 = p2.Position - origin;
vec3d v2 = p3.Position - origin;
Vec3d origin = p1.Position;
Vec3d v1 = p2.Position - origin;
Vec3d v2 = p3.Position - origin;
vec1 = v1 - v2 * (v1.Y / v2.Y); //计算平面在xz平面上的方向投影
@@ -1,54 +1,47 @@
using StgSharp.Math;
using System;
using System.Runtime.InteropServices;
using System.Threading;
namespace StgSharp.Geometries
{
public unsafe class Point
{
internal vec3d* positionPtr;
internal Vec3d position;
internal readonly bool isVertex;
internal Point(vec3d* ptr)
internal Point(Vec3d p)
{
positionPtr = ptr;
position = p;
}
public Point()
{
IntPtr ptr = Marshal.AllocHGlobal(sizeof(vec3d));
positionPtr = (vec3d*)ptr.ToPointer();
}
public vec3d Position
public Vec3d Position
{
get { return *positionPtr; }
set { *positionPtr = value; }
}
public vec3d* PositionPtr
{
get { return positionPtr; }
set { positionPtr = value; }
get { return position; }
set { position = value; }
}
public float X
{
get { return (*this.positionPtr).X; }
set { (*this.positionPtr).X = value; }
get { return position.X; }
set { position.X = value; }
}
public float Y
{
get { return (*this.positionPtr).Y; }
set { (*this.positionPtr).Y = value; }
get { return position.Y; }
set { position.Y = value; }
}
public float Z
{
get { return (*this.positionPtr).Z; }
set { (*this.positionPtr).Z = value; }
get { return position.Z; }
set { position.Z = value; }
}
@@ -70,7 +63,7 @@ namespace StgSharp.Geometries
public bool IsOnPlain(IPlainGeometry geo)
{
return (*this.positionPtr) * geo.GetPlain().plainParameter == 1;
return position * geo.GetPlain().plainParameter == 1;
}
@@ -50,13 +50,13 @@ namespace StgSharp.Geometries
}
public virtual vec3d MovVertex01(uint tick) => movVertex01Operation.Invoke(tick);
public virtual Vec3d MovVertex01(uint tick) => movVertex01Operation.Invoke(tick);
public virtual vec3d MovVertex02(uint tick) => movVertex01Operation.Invoke(tick);
public virtual Vec3d MovVertex02(uint tick) => movVertex01Operation.Invoke(tick);
public virtual vec3d MovVertex03(uint tick) => movVertex01Operation.Invoke(tick);
public virtual Vec3d MovVertex03(uint tick) => movVertex01Operation.Invoke(tick);
public virtual vec3d MovVertex04(uint tick) => movVertex01Operation.Invoke(tick);
public virtual Vec3d MovVertex04(uint tick) => movVertex01Operation.Invoke(tick);
internal override void OnRender(uint tick)
@@ -36,15 +36,15 @@ namespace StgSharp.Geometries
{
}
public virtual vec3d movPoint01(uint tick) => movP01Operation.Invoke(TimeLine.tickCounter._value);
public virtual Vec3d movPoint01(uint tick) => movP01Operation.Invoke(TimeLine.tickCounter._value);
public virtual vec3d movPoint02(uint tick) => movP02Operation.Invoke(TimeLine.tickCounter._value);
public virtual Vec3d movPoint02(uint tick) => movP02Operation.Invoke(TimeLine.tickCounter._value);
public virtual vec3d movPoint03(uint tick) => movP03Operation.Invoke(TimeLine.tickCounter._value);
public virtual Vec3d movPoint03(uint tick) => movP03Operation.Invoke(TimeLine.tickCounter._value);
public virtual vec3d movPoint04(uint tick) => movP04Operation.Invoke(TimeLine.tickCounter._value);
public virtual Vec3d movPoint04(uint tick) => movP04Operation.Invoke(TimeLine.tickCounter._value);
public virtual vec3d movPoint05(uint tick) => movP05Operation.Invoke(TimeLine.tickCounter._value);
public virtual Vec3d movPoint05(uint tick) => movP05Operation.Invoke(TimeLine.tickCounter._value);
internal override void OnRender(uint tick)
@@ -35,32 +35,32 @@ namespace StgSharp.Geometries
public GetLocationHandler MovP05Operation { get => movP05Operation; }
public GetLocationHandler MovP06Operation { get => movP06Operation; }
public virtual vec3d movPoint01(uint tick)
public virtual Vec3d movPoint01(uint tick)
{
return movP01Operation.Invoke(TimeLine.tickCounter._value);
}
public virtual vec3d movPoint02(uint tick)
public virtual Vec3d movPoint02(uint tick)
{
return movP02Operation.Invoke(TimeLine.tickCounter._value);
}
public virtual vec3d movPoint03(uint tick)
public virtual Vec3d movPoint03(uint tick)
{
return movP03Operation.Invoke(TimeLine.tickCounter._value);
}
public virtual vec3d movPoint04(uint tick)
public virtual Vec3d movPoint04(uint tick)
{
return movP04Operation.Invoke(TimeLine.tickCounter._value);
}
public virtual vec3d movPoint05(uint tick)
public virtual Vec3d movPoint05(uint tick)
{
return movP05Operation.Invoke(TimeLine.tickCounter._value);
}
public virtual vec3d movPoint06(uint tick)
public virtual Vec3d movPoint06(uint tick)
{
return movP06Operation.Invoke(TimeLine.tickCounter._value);
}
@@ -19,14 +19,14 @@ namespace StgSharp.Geometries
/// </summary>
/// <param name="tick">当前游戏刻</param>
/// <returns></returns>
public virtual vec3d MovCenter(uint tick) => default(vec3d);
public virtual Vec3d MovCenter(uint tick) => default(Vec3d);
public sealed override vec3d MovVertex03(uint tick)
public sealed override Vec3d MovVertex03(uint tick)
{
return this.center.Position * 2 - this.vertex01.Position;
}
public sealed override vec3d MovVertex04(uint tick)
public sealed override Vec3d MovVertex04(uint tick)
{
return this.center.Position * 2 - this.vertex02.Position;
}
@@ -8,7 +8,7 @@ namespace StgSharp.Geometries
/// </summary>
public class Square : Rectangle
{
public sealed override vec3d MovVertex02(uint tick)
public sealed override Vec3d MovVertex02(uint tick)
{
return this.center.Position * 2 - this.vertex01.Position;
}
@@ -23,11 +23,11 @@ namespace StgSharp.Geometries
public GetLocationHandler MovVertex02Operation => this.movVertex02Opearion;
public GetLocationHandler MovVertex03Operation => this.movVertex03Opearion;
public virtual vec3d MovVertex01(uint tick) => movVertex01Opearion.Invoke(tick);
public virtual Vec3d MovVertex01(uint tick) => movVertex01Opearion.Invoke(tick);
public virtual vec3d MovVertex02(uint tick) => movVertex02Opearion.Invoke(tick);
public virtual Vec3d MovVertex02(uint tick) => movVertex02Opearion.Invoke(tick);
public virtual vec3d MovVertex03(uint tick) => movVertex03Opearion.Invoke(tick);
public virtual Vec3d MovVertex03(uint tick) => movVertex03Opearion.Invoke(tick);
public Triangle()
{
@@ -46,9 +46,9 @@ namespace StgSharp.Geometries
}
public Triangle(
vec3d vertex01,
vec3d vertex02,
vec3d vertex03
Vec3d vertex01,
Vec3d vertex02,
Vec3d vertex03
)
{
vertex1.Position = vertex01;