【技术交流】Rainmeter Rouundline 戴布拉图的实现。
本帖最后由 KID123KID 于 2015-5-22 19:26 编辑时间过的真的很快,从去年的高三到现在,已经有将近快一年没有写过Rainmeter。
Rainmeter内置的meter绘图,能帮我们完成类似于条形、饼图等类型的Meter,但是据我所知好像是不支持戴布拉图的绘制。
先简单介绍一下戴布拉图吧:
戴布拉图,又可称为雷达图(Radar Chart)、蜘蛛网图(Spider Chart),是财务分析报表的一种。即将一个公司的各项财务分析所得的数字或比率,就其比较重要的项目集中划在一个圆形的图表上,来表现一个公司各项财务比率的情况,使用者能一目了然的了解公司各项财务指标的变动情形及其好坏趋向。
首先我这个想法还是来源我一个室友委托我帮他写一个Rainmeter SKIN所遇到的,至于是什么,在这个月底我会发布的。
原谅我说了这么多的废话,现在来讲解一下戴布拉图的自动生成函数理念吧。
(这里以三边戴布拉图为实例):
我的实现方法是:
1、首先通过给定数值,比如这是一个考试 分析戴布拉图,满分为100分,最低分为0.001,(因为戴布拉图需要数值全部不能为零才能动态生成,在Excel中或者一些软件中,能输入0,是因为其实程序会自动的为其加上一个非常非常小的小数,让你看上去这一项点的坐标为中心点坐标,这里为0.001是因为Measure默认返回小数点后5位,虽然能设置最高返回10位,但是我没有设置,所以最小值为0.001,因为余弦定理需要开平方,0.001已经是默认五位的极限平方根了,如果设置返回10位的话,最小值能为0.00001),通过这个戴布拉图可以非常直观看到3课成绩的走势,那科偏科,那科强项。
戴布拉图都是正多边形。
1、首先通过给定的数值 (数值就是两科成绩) 来计算c边长和a边长:
然后有了边长就能求出A点坐标,A点坐标
x=正三角形底边长度 / 2
y=正三角形中心到一个角的长度 - c边长
这个三角形是用Roundline事先画好的,边长为500像素。用余弦定理求出中心到任意角的长度为289像素。
∠C的度数为120,然后通过用余弦定理:
a^2=b^2+c^2-2bccosA
能非常轻松的求出b边长的数值,b边长就是戴布拉图其中第一条线的长度。
有了长度和坐标,我只要求出∠A的数值,就能决定指向。
同样用余弦定理:a^2=b^2+c^2-2bc*cosA
artcos反余弦函数。就能求出∠A。
现在有了坐标和长度以及角度,就能绘制了。 其余两条黛布拉线条用同样的方法求出,一个戴布拉图就动态生成了,大家还是看代码研究吧,我语文表达能力不好。
相信有了戴布拉图的支持,以后各位Rainmeter开发者能设计更多样式,比如一个 CPU、内存、硬盘读写的戴布拉图系统检测。
实现函数:http://pan.baidu.com/s/1gdeX3eb
戴布拉图系统检测:http://pan.baidu.com/s/199UxS
看起来还不错,不过总觉得缺少一些美感,
---------------------------------------------------------------------------------------------------------------------
prettyboy于2015-5-22 12:13补充以下内容:
额,下面这里算是误写吗,其实我是赚积分的
artcos反三角函数就能求出∠A
---------------------------------------------------------------------------------------------------------------------
进作者的网站看了一下,原来那个皮肤是作者所创,就是现在这个皮肤比上一个dock成熟多了,我感觉 prettyboy 发表于 2015-5-22 12:10
看起来还不错,不过总觉得缺少一些美感,
朋友,仔细一看确实口误了,是artcos反余弦函数。我修改一下,谢谢你的提醒。 prettyboy 发表于 2015-5-22 12:10
看起来还不错,不过总觉得缺少一些美感,
确实如此,做的非常粗糙,这是一个演示,我希望更多的Rainmeter开发者能开发不一样的Meter显示类型。而不是局限于类似于条形、饼图等。 不错,前排支持楼主~~~ KID123KID 发表于 2015-5-22 19:25
朋友,仔细一看确实口误了,是artcos反余弦函数。我修改一下,谢谢你的提醒。
醉了,我其实是想说arccos的,可能有人说我没事找事做,不过算了,既然说了就说了 {:10_440:}膜拜中 {:10_438:}回来学习学习补习补习,顶顶 来做个沙发