/// <summary>
        ///
        /// </summary>
        /// <param name="point"></param>
        /// <param name="start"></param>
        /// <param name="axis"></param>
        /// <param name="radius"></param>
        /// <returns></returns>
        public static double Capsule(Vector3d point, Vector3d start, Vector3d axis, double radius)
        {
            var d = point - start;
            var t = SlurMath.Saturate(Vector3d.Dot(d, axis) / axis.SquareLength);

            return((d - axis * t).Length - radius);
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="point"></param>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <param name="radius"></param>
        /// <returns></returns>
        public static double Capsule(Vec3d point, Vec3d start, Vec3d end, double radius)
        {
            var d0 = point - start;
            var d1 = end - start;
            var t  = SlurMath.Saturate(Vec3d.Dot(d0, d1) / d1.SquareLength);

            return((d0 - d1 * t).Length - radius);
        }
Beispiel #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="weight"></param>
        /// <returns></returns>
        public float ToScale(float weight)
        {
            var t = SlurMath.Saturate(SlurMath.Normalize(weight, _weight0, _weight1));

            return(SlurMath.Lerp(_scale0, _scale1, t));
        }