internal void UpdateTriangleReference(STLModel3D stlModel, SupportProfile selectedMaterialProfile)
        {
            //find latest supportcone supported height
            TriangleIntersection[] trianglesIntersected = null;
            var supportPointPosition = this.TopPoint.AsVector3();

            supportPointPosition.Z = this.SliceHeight - 1f;

            if (this._trianglesWithinXYRange == null)
            {
                CalcTrianglesWithinRange(supportPointPosition, selectedMaterialProfile, stlModel);
            }

            var trianglesAboveSupportPoint = new STLModel3D()
            {
                Triangles = new TriangleInfoList()
            };

            trianglesAboveSupportPoint.Triangles[0] = this._trianglesWithinXYRange.Triangles[0].Where(s => s.Top > supportPointPosition.Z && s.Normal.Z < 0).ToList();

            IntersectionProvider.IntersectTriangle(new Vector3Class(supportPointPosition.Xy), new Vector3Class(0, 0, 1), trianglesAboveSupportPoint, IntersectionProvider.typeDirection.OneWay, false, new Vector3Class(), out trianglesIntersected);
            if (trianglesIntersected != null)
            {
                var nearestLastSupportedHeight         = new Vector3Class();
                var nearestLastSupportedHeightDistance = float.MaxValue;
                foreach (var triangleIntersection in trianglesIntersected)
                {
                    if (triangleIntersection != null)
                    {
                        var distance = (triangleIntersection.IntersectionPoint - supportPointPosition).Length;
                        if (distance < nearestLastSupportedHeightDistance)
                        {
                            nearestLastSupportedHeightDistance = distance;
                            nearestLastSupportedHeight         = triangleIntersection.IntersectionPoint;

                            this.ModelIntersection        = triangleIntersection;
                            this.LastSupportedCenterAngle = OpenTK.MathHelper.RadiansToDegrees(Vector3Class.CalculateAngle(this.ModelIntersection.Normal, Vector3Class.UnitZ));
                        }
                    }
                }
            }
        }