コード例 #1
0
ファイル: WireframePoint.cs プロジェクト: widovd/NEUNET
        // ----------------------------------------------------------------------------------------
        #region WireframePointBase

        public virtual void CalculatePointsF(float length, Func <Single3, PointF> func)
        {
            OriginF    = new PointF(float.NaN, float.NaN); // default
            RayEndF    = new PointF(float.NaN, float.NaN); // default
            NormalEndF = new PointF(float.NaN, float.NaN); // default
            if (!Single3.IsNaN(Origin))
            {
                OriginF = func(Origin);
                if (!double.IsNaN(length))
                {
                    if (!Single3.IsNaN(Direction))
                    {
                        RayEndF = func(Origin + length * Direction);
                    }
                    if (!Single3.IsNaN(Normal))
                    {
                        NormalEndF = func(Origin + length * Normal);
                    }
                }
            }
        }
コード例 #2
0
        // ----------------------------------------------------------------------------------------
        #region Draw

        public PointF Project(Single3 point)
        {
            PointF result = new PointF(float.NaN, float.NaN); // Default value

            if (!Single3.IsNaN(point))
            {
                float zoom = Zoom;
                if (!float.IsNaN(zoom) && zoom > 0d)
                {
                    float biggestSize = BiggestSize;
                    if (!float.IsNaN(biggestSize) && biggestSize > 0d)
                    {
                        Single3 p2 = RotMat * (point - Origin); // 9 multiplications, 6 additions
                        if (Perspective > 0d)
                        {
                            float b = Perspective * p2.Y / biggestSize;
                            zoom /= (1f + b);
                        }
                        result = new PointF(ToSingle(_centerX + zoom * p2.X), ToSingle(_centerY - zoom * p2.Z)); // 2 multiplications, 2 additions
                    }
                }
            }
            return(result);
        }