• 大小: 3KB
    文件类型: .cs
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: C#
  • 标签: 坐标轴  算法  刻度  

资源简介

坐标轴刻度取值算法完整代码,生成比较优雅和人性化的刻度。

资源截图

代码片段和文件信息

using System;

namespace MathLib.Algorithm.Image
{
    /// 
    /// 刻度生成
    /// 

    public class DegreeScale
    {
        /// 
        /// 计算刻度
        /// 起始值必须小于结束值
        /// 

        /// 起始值
        /// 结束值
        /// 期望刻度数量,实际数接近此数
        /// 刻度起始值,须乘以间隔使用
        /// 刻度结束值,须乘以间隔使用
        /// 刻度间隔
        public static void CalcDegreeScale(double start double end int expect_num out int degree_start out int degree_end out double degree_gap)
        {
            if (start >= end)
            {
                throw new Exception(“起始值必须小于结束值“);
            }

            double differ = end - start;
            double differ_gap = differ / (expect_num - 1);//35 4.6 0.27

            double exponent = Math.Log10(differ_gap) - 1;//0.54 -0.34 -1.57 
            int _exponent = (int)exponent;//0 0=>-1 -1=>-2
            if (exponent < 0 && Math.Abs(exponent) > 1e-8)
            {
                _exponent--;
            }

            int step = (int)(differ_gap / Math.Pow(10 _exponent));//35 46 27            
            int[] fix_steps = new int[] { 10 20 25 50 100 };
            int fix_step = 10;//25 50 25
            for (int i = fix_steps.Length - 1; i >= 1; i--)
            {
                if (step > (fix_steps[i] + fix_steps[i - 1]) / 2)
     

评论

共有 条评论