本文整理汇总了C#中Game.Orig.Math3D.MyVector.BecomeUnitVector方法的典型用法代码示例。如果您正苦于以下问题:C# MyVector.BecomeUnitVector方法的具体用法?C# MyVector.BecomeUnitVector怎么用?C# MyVector.BecomeUnitVector使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Game.Orig.Math3D.MyVector
的用法示例。
在下文中一共展示了MyVector.BecomeUnitVector方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: button1_Click
private void button1_Click(object sender, EventArgs e)
{
MyVector v1 = new MyVector(3, 4, 5);
v1.Add(1, 2, 3);
v1.BecomeUnitVector();
MyVector v2 = v1.Clone();
v2.Multiply(3);
v1.Divide(3);
}
示例2: GetSpinVelocityAtPoint
private MyVector GetSpinVelocityAtPoint(ref AngularVelocityInfo angularInfo, out MyVector dirToCenterLine, MyVector dirFacingWorld, MyVector lineBetween, MyVector blipPosition)
{
// Get a line that's orthogonal to lineBetween, and always points toward the dirFacingWorld vector
dirToCenterLine = MyVector.Cross(MyVector.Cross(lineBetween, dirFacingWorld), lineBetween);
dirToCenterLine.BecomeUnitVector();
if (angularInfo == null)
{
#region Cache Angular Velocity
angularInfo = new AngularVelocityInfo();
if (_ship.TorqueBall != null)
{
angularInfo.AngularVelocity = _ship.TorqueBall.AngularVelocity.GetMagnitude();
angularInfo.SpinDirection = MyVector.Cross(_ship.TorqueBall.AngularVelocity, _ship.TorqueBall.DirectionFacing.Standard);
angularInfo.SpinDirection.BecomeUnitVector();
angularInfo.CenterMass = _ship.TorqueBall.Rotation.GetRotatedVector(_ship.TorqueBall.CenterOfMass, true);
angularInfo.CenterMass.Add(_ship.TorqueBall.Position);
}
else
{
angularInfo.SpinDirection = dirToCenterLine.Clone();
angularInfo.AngularVelocity = 0d;
angularInfo.CenterMass = _ship.Ball.Position.Clone();
}
#endregion
}
// Get the line between the blip and the center of mass
MyVector lineBetweenCM = blipPosition - angularInfo.CenterMass;
// Figure out my velocity of spin where the blip is
return angularInfo.SpinDirection * (angularInfo.AngularVelocity * lineBetweenCM.GetMagnitude());
}
示例3: OrthonormalizeOrientation
/// <summary>
/// I only made this public so I could hook a tester to it
/// </summary>
public static void OrthonormalizeOrientation(MyMatrix3 orientation)
{
// Do some crazy math (something about constraining 9 degrees of freedom of a matrix down to 3)
MyVector x = new MyVector(orientation.M11, orientation.M21, orientation.M31);
x.BecomeUnitVector();
MyVector y = new MyVector(orientation.M12, orientation.M22, orientation.M32); // just store a temp variable into y (until I calculate z)
MyVector z = MyVector.Cross(x, y);
z.BecomeUnitVector();
y = MyVector.Cross(z, x);
y.BecomeUnitVector();
// Overwrite the matrix passed in
orientation.M11 = x.X;
orientation.M12 = y.X;
orientation.M13 = z.X;
orientation.M21 = x.Y;
orientation.M22 = y.Y;
orientation.M23 = z.Y;
orientation.M31 = x.Z;
orientation.M32 = y.Z;
orientation.M33 = z.Z;
}
示例4: StoreMouseMove
private void StoreMouseMove(int x, int y)
{
MyVector safe = new MyVector();
safe.X = UtilityCore.GetScaledValue(_multiplier * -1d, _multiplier, 0, this.Width, x);
safe.Y = UtilityCore.GetScaledValue(_multiplier * -1d, _multiplier, 0, this.Height, y);
double safeMultiplier = _multiplier * SAFEPERCENT; // I don't want to butt up against the multiplier, or store value will increase it on me
if (safe.GetMagnitudeSquared() > safeMultiplier * safeMultiplier)
{
safe.BecomeUnitVector();
safe.Multiply(safeMultiplier);
}
StoreNewValue(safe.X, safe.Y, 0d);
}