研究了很多天矩阵的算法,算是知道了一点心得。
1.坐标轴和我们的数学坐标轴是不一样的,这里的Y轴是向下的!这点尤其重要
2.翻转和平移都可以实现实例【Rainmeter中文手册第四版】中的图形变换。

[MeterBG]
Meter=Image
W=200
H=200
SolidColor=255,255,255,128
[MeterSquare]
Meter=Image
W=50
H=50
X=75
Y=75
SolidColor=0,0,0
TransformationMatrix=-1;0;0;1;250;0

3.矩阵变换公式的推导过程
由于第四版本的教程没有提出来详细的推导过程,心痒难耐,在此把过程给大家演示一遍,如有错误欢迎指证。


附带逆时针旋转矩阵推导公式

4.给出顺时针旋转的矩阵变换代码,顺便提示一下,下面自动换行的自己在编辑的时候改成一行。
[Rainmeter]
Update=1000
[MeterBG]
Meter=Image
W=220
H=220
SolidColor=255,255,255,128
[MeasureSinAngle]
Measure=Calc
Formula=SIN((Counter%360)/360*2*PI)
[MeasureCosAngle]
Measure=Calc
Formula=COS((Counter%360)/360*2*PI)
[MeasureTX]
Measure=Calc
Formula=110-MeasureCosAngle*110+MeasureSinAngle*110
[MeasureTY]
Measure=Calc
Formula=110-MeasureSinAngle*110-MeasureCosAngle*110
[MeterSquare]
Meter=Image
X=60
Y=60
W=100
H=100
SolidColor=0,0,0
DynamicVariables=1
TransformationMatrix=[MeasureCosAngle]; [MeasureSinAngle]; -[MeasureSinAngle]; [MeasureCosAngle]; [MeasureTX]; [MeasureTY]
5.上面代码有个问题时间长了发现图形的旋转并不完美,旋转一定时间图形就变成畸形的了。有待查找问题!还是使用手册中的代码,仅仅需要把SIN的measure加一个负号就可以实现顺时针和逆时针的切换。(相比于上面的代码多了一个Measure)
[Rainmeter]
Update=1000
[MeterBG]
Meter=Image
W=220
H=220
SolidColor=255,255,255,128
[MeasureSinAngle]
Measure=Calc
Formula=-SIN((Counter%360)/360*2*PI)
[MeasureNegSinAngle]
Measure=Calc
Formula=-(MeasureSinAngle)
[MeasureCosAngle]
Measure=Calc
Formula=COS((Counter%360)/360*2*PI)
[MeasureTX]
Measure=Calc
Formula=110-MeasureCosAngle*110-MeasureSinAngle*110
[MeasureTY]
Measure=Calc
Formula=110-MeasureNegSinAngle*110-MeasureCosAngle*110
[MeterSquare]
Meter=Image
X=60
Y=60
W=100
H=100
SolidColor=0,0,0
DynamicVariables=1
TransformationMatrix=[MeasureCosAngle]; [MeasureNegSinAngle]; [MeasureSinAngle]; [MeasureCosAngle]; [MeasureTX]; [MeasureTY]
1.坐标轴和我们的数学坐标轴是不一样的,这里的Y轴是向下的!这点尤其重要
2.翻转和平移都可以实现实例【Rainmeter中文手册第四版】中的图形变换。

[MeterBG]
Meter=Image
W=200
H=200
SolidColor=255,255,255,128
[MeterSquare]
Meter=Image
W=50
H=50
X=75
Y=75
SolidColor=0,0,0
TransformationMatrix=-1;0;0;1;250;0

3.矩阵变换公式的推导过程
由于第四版本的教程没有提出来详细的推导过程,心痒难耐,在此把过程给大家演示一遍,如有错误欢迎指证。


附带逆时针旋转矩阵推导公式

4.给出顺时针旋转的矩阵变换代码,顺便提示一下,下面自动换行的自己在编辑的时候改成一行。
[Rainmeter]
Update=1000
[MeterBG]
Meter=Image
W=220
H=220
SolidColor=255,255,255,128
[MeasureSinAngle]
Measure=Calc
Formula=SIN((Counter%360)/360*2*PI)
[MeasureCosAngle]
Measure=Calc
Formula=COS((Counter%360)/360*2*PI)
[MeasureTX]
Measure=Calc
Formula=110-MeasureCosAngle*110+MeasureSinAngle*110
[MeasureTY]
Measure=Calc
Formula=110-MeasureSinAngle*110-MeasureCosAngle*110
[MeterSquare]
Meter=Image
X=60
Y=60
W=100
H=100
SolidColor=0,0,0
DynamicVariables=1
TransformationMatrix=[MeasureCosAngle]; [MeasureSinAngle]; -[MeasureSinAngle]; [MeasureCosAngle]; [MeasureTX]; [MeasureTY]
5.上面代码有个问题时间长了发现图形的旋转并不完美,旋转一定时间图形就变成畸形的了。有待查找问题!还是使用手册中的代码,仅仅需要把SIN的measure加一个负号就可以实现顺时针和逆时针的切换。(相比于上面的代码多了一个Measure)
[Rainmeter]
Update=1000
[MeterBG]
Meter=Image
W=220
H=220
SolidColor=255,255,255,128
[MeasureSinAngle]
Measure=Calc
Formula=-SIN((Counter%360)/360*2*PI)
[MeasureNegSinAngle]
Measure=Calc
Formula=-(MeasureSinAngle)
[MeasureCosAngle]
Measure=Calc
Formula=COS((Counter%360)/360*2*PI)
[MeasureTX]
Measure=Calc
Formula=110-MeasureCosAngle*110-MeasureSinAngle*110
[MeasureTY]
Measure=Calc
Formula=110-MeasureNegSinAngle*110-MeasureCosAngle*110
[MeterSquare]
Meter=Image
X=60
Y=60
W=100
H=100
SolidColor=0,0,0
DynamicVariables=1
TransformationMatrix=[MeasureCosAngle]; [MeasureNegSinAngle]; [MeasureSinAngle]; [MeasureCosAngle]; [MeasureTX]; [MeasureTY]