public Position(FVector3 basePosition, FVector3 intermediatePosition, FVector3 targetPosition, float baseTime, float targetTime) { if (baseTime > targetTime) { throw new ArgumentException($"Base time {baseTime} cannot be larger than target time {targetTime}"); } QuadraticReg(0.0f, 0.5f, 0.1f, basePosition.X, intermediatePosition.X, targetPosition.X, out var xA, out var xB, out var xC); QuadraticReg(0.0f, 0.5f, 0.1f, basePosition.Y, intermediatePosition.Y, targetPosition.Y, out var yA, out var yB, out var yC); QuadraticReg(0.0f, 0.5f, 0.1f, basePosition.Z, intermediatePosition.Z, targetPosition.Z, out var zA, out var zB, out var zC); _a = new FVector3(xA, yA, zA); _b = new FVector3(xB, yB, zB); _c = new FVector3(xC, yC, zC); Tween = TweenType.Quadratic; BaseTime = baseTime; TargetTime = targetTime; }
public static FVector3 Midpoint(FVector3 v, FVector3 w) => (v + w) / 2.0f;