資源簡(jiǎn)介
坐標(biāo)軸刻度取值算法完整代碼,生成比較優(yōu)雅和人性化的刻度。
代碼片段和文件信息
using?System;
namespace?MathLib.Algorithm.Image
{
????///?
????///?刻度生成
????///?
????public?class?DegreeScale
????{
????????///?
????????///?計(jì)算刻度
????????///?起始值必須小于結(jié)束值
????????///?
????????///?起始值
????????///?結(jié)束值
????????///?期望刻度數(shù)量,實(shí)際數(shù)接近此數(shù)
????????///?刻度起始值,須乘以間隔使用
????????///?刻度結(jié)束值,須乘以間隔使用
????????///?刻度間隔
????????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(“起始值必須小于結(jié)束值“);
????????????}
????????????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)
?????
評(píng)論
共有 條評(píng)論