This worked. I don't use shape meter for making circle. I'm old school about it.Yincognito wrote: ↑July 21st, 2021, 8:35 pm Removing or commenting out AntiAlias=1 from the meter should fix it, because it's about the rounding errors when it comes to pixels ... but then the circle's contour / edges will not be that smooth, so there is a drawback to it. Why not using the Ellipse shape to draw a full (and either filled or not) circle though?Also, just curious, is there a reason why you use TransformationMatrix for the dials and texts? Do you envision some other transformation, i.e. scaling or skewing for the future maybe? The dials can be drawn very easy just by modifiying the StartAngle option accordingly for each one of them, and Strings can also be rotated directly.Code: Select all
[MeterBG] Meter=Shape X=(#Radius#*0.0) Y=(#Radius#*0.0) Shape=Ellipse #Radius#,#Radius#,#Radius# | Fill Color 1,6,135,255 | StrokeWidth 0 AntiAlias=1
It is currently March 29th, 2024, 12:58 pm
Transformation matrix and circle issue
-
- Posts: 826
- Joined: November 20th, 2012, 11:58 pm
Re: Transformation matrix and circle issue
-
- Rainmeter Sage
- Posts: 7029
- Joined: February 27th, 2015, 2:38 pm
- Location: Terra Yincognita
Re: Transformation matrix and circle issue
Ah, ok, no problem about it - you do as you wish. I just emphasized that the Shape meters are built precisely for ... well, drawing all kinds of shapes. I was too old school back in the day and used to draw a circle point by point using Sin() and Cos(), but that was just because that very old and rudimentar computer I had then didn't have a Circle function at all.FreeRaider wrote: ↑July 21st, 2021, 9:27 pm This worked. I don't use shape meter for making circle. I'm old school about it.
P.S. You can post this as a bug in the Bugs And Feature Suggestion section of the forum, by the way, since it's you who discovered it. Maybe the devs will fix it if they decide it's indeed a bug.
-
- Rainmeter Sage
- Posts: 16110
- Joined: October 11th, 2010, 6:27 pm
- Location: Gheorgheni, Romania
Re: Transformation matrix and circle issue
Setting the StringAlign to CenterCenter doesn't help. There are more problems with the Angle option, I personally never used it. For instance here is an extremely simple String meter (I added this to FreeRaider's code), which when clicked rotates the letter by 90 degrees. This rotation can be done either by the Angle option, or by TransformationMatrx. The code is this:Yincognito wrote: ↑July 21st, 2021, 9:15 pm Yes, that's true, but wouldn't this be eased by setting the StringAlign to CenterCenter? Didn't try it, but it should work in theory, shouldn't it?
If the above is true, it would only leave the angle to be taken care of in that Angle option, and that is just as easy as for the TransformationMatrix, if I'm not mistaken.
Code: Select all
[MeterP]
Meter=STRING
X=#Radius#
Y=#Radius#
Padding=15,5,15,5
FontColor=220,220,220
FontEffectColor=0,0,0
StringEffect=Shadow
SolidColor=0,0,0,150
FontSize=28
FontFace=Segoe UI
StringStyle=BOLD
StringAlign=CenterCenter
AntiAlias=1
Text=P
DynamicVariables=1
LeftMouseUpAction=[!SetVariable Rotate "(1-#Rotate#)"][!UpdateMeter "MeterP"][!Redraw]
;Angle=(#Rotate#*PI/2)
TransformationMatrix=(Cos(#Rotate#*PI/2));(-Sin(#Rotate#*PI/2));(Sin(#Rotate#*PI/2));(Cos(#Rotate#*PI/2));(#Radius#-(#Radius#*Cos(#Rotate#*PI/2))-(#Radius#*Sin(#Rotate#*PI/2)));(#Radius#+(#Radius#*Sin(#Rotate#*PI/2))-(#Radius#*Cos(#Rotate#*PI/2)))
I don't sustain that any of these options would be better or worst, however I sustain that TransformationMatrix is much more versatile and if one clarifies the math behind, it's much easier. My opinion...
You do not have the required permissions to view the files attached to this post.
-
- Rainmeter Sage
- Posts: 7029
- Joined: February 27th, 2015, 2:38 pm
- Location: Terra Yincognita
Re: Transformation matrix and circle issue
Thanks for the example, balala, now I understand what you mean. I'm on mobile now so I can't test to see where the problem is, but I'll do it ASAP when I get back to my laptop. Probably some combination between the actual Y of the meter and possibly padding. A solution for this surely exists, it remains to be seen if it's simple or a bit more complicated. In any case, the TM variant is already somewhat similarly complex, so it can't be worse than that (I'm talking from a regular user POV, those using the such methods will be fine with it, of course).
-
- Posts: 826
- Joined: November 20th, 2012, 11:58 pm
Re: Transformation matrix and circle issue
Balala, your code works very well. Only a thing. if I want to change the rotation of the 6 (it currently looks like a 9), how should I do?
-
- Rainmeter Sage
- Posts: 16110
- Joined: October 11th, 2010, 6:27 pm
- Location: Gheorgheni, Romania
Re: Transformation matrix and circle issue
Definitely can be done, but there is a small problem. The [MeterSquare30] meter (showing the number 6) is placed onto another point where you see it after applying the TransformationMatrix, so you have to rotate it again. Unfortunately right now have no time to work with it, but later today I'm gonna modify the code in order to get it as desired (if in meantime someone else doesn't do it). Stay tuned...FreeRaider wrote: ↑July 22nd, 2021, 10:51 am if I want to change the rotation of the 6 (it currently looks like a 9), how should I do?
-
- Posts: 826
- Joined: November 20th, 2012, 11:58 pm
Re: Transformation matrix and circle issue
Don't worry...it's just a curiositybalala wrote: ↑July 22nd, 2021, 11:26 am Definitely can be done, but there is a small problem. The [MeterSquare30] meter (showing the number 6) is placed onto another point where you see it after applying the TransformationMatrix, so you have to rotate it again. Unfortunately right now have no time to work with it, but later today I'm gonna modify the code in order to get it as desired (if in meantime someone else doesn't do it). Stay tuned...
-
- Rainmeter Sage
- Posts: 7029
- Joined: February 27th, 2015, 2:38 pm
- Location: Terra Yincognita
Re: Transformation matrix and circle issue
Just out of curiosity ... changing the rotation angle will break consistency with the style of the other dial+square pairs, so it's probably not worth doing (the rotation is a nice feature to have, but from a practical POV nobody is going to break his neck to actually try to read the numbers, unless the whole clock is spinning and save them of the effort). That being said, there are other possible alternatives to clear the confusion due to string rotation:
- use roman numerals for each string
- use different font colors for each string
- use different solid colors for each string
- use different font size for each string
- place strings similarly, but don't rotate them
- use different fonts for each string
- use a vertical gradient for each string's "box"
- use an InlineSetting underline effect to make it clear where is the "bottom" of the string
Or, you could flip strings, but this involves multiplicating 2 matrices and again it's not really worth the effort.
The last two variants illustrated here, since they only required simple changes to [StringStyle]:
- use roman numerals for each string
- use different font colors for each string
- use different solid colors for each string
- use different font size for each string
- place strings similarly, but don't rotate them
- use different fonts for each string
- use a vertical gradient for each string's "box"
- use an InlineSetting underline effect to make it clear where is the "bottom" of the string
Or, you could flip strings, but this involves multiplicating 2 matrices and again it's not really worth the effort.
The last two variants illustrated here, since they only required simple changes to [StringStyle]:
You do not have the required permissions to view the files attached to this post.
-
- Rainmeter Sage
- Posts: 7029
- Joined: February 27th, 2015, 2:38 pm
- Location: Terra Yincognita
Re: Transformation matrix and circle issue
I believe you're right, it's a bit of a problem to do it right for the String meter's Angle option. While in itself the matter is not at all complicated (basically it's about the fact that the center of rotation is at: left top of the meter for similarly aligned strings, at middle top for center center strings, and so on) and the translation formulas aren't complicated by themselves, there are a couple of issues:
- the rotation is performed only for the string and not for its "box", i.e. the solid color one
- the formulas slightly differ based on string alignment, padding, etc., which makes a consistent formula impossible
- the formulas will also slightly differ if you choose a different center of rotation instead of around the string's own center
- the rotation itself is not as fluid as the TM one (this might be because I didn't add some needed element in the formula though, so it's debatable)
Your sample, animated (the P letter will rotate around its center just fine, albeit with the drawbacks mentioned above):
Code: Select all
[Variables]
Radius=300
Rotate=0
[Rainmeter]
Update=25
AccurateText=1
DynamicWindowSize=1
---Measures---
[Angle]
Measure=Calc
Formula=((360+Angle+1)%360)
---Styles---
[RoundlineStyle]
RotationAngle=0
X=0
Y=0
H=(#Radius#*2.0)
W=(#Radius#*2.0)
LineLength=#Radius#
LineStart=(#Radius#*0.50)
LineWidth=(#Radius#*0.01)
StartAngle=((Rad(270)))
LineColor=afafaf
AntiAlias=1
Solid=0
[StringStyle]
X=#Radius#
Y=(#Radius#/3)
SolidColor=255,0,0,255
SolidColor2=0,255,0,255
GradientAngle=90
InlineSetting=Underline
FontFace=Courier New
FontSize=12
AntiAlias=1
StringAlign=CenterCenter
---Meters---
; [MeterBG]
; Meter=Shape
; X=(#Radius#*0.0)
; Y=(#Radius#*0.0)
; Shape=Ellipse #Radius#,#Radius#,#Radius# | Fill Color 1,6,135,255 | StrokeWidth 0
; AntiAlias=1
[MeterBG]
Meter=RoundLine
X=(#Radius#*0.0)
Y=(#Radius#*0.0)
H=(#Radius#*2.0)
W=(#Radius#*2.0)
LineLength=(#Radius#)
StartAngle=((Rad(270)))
LineColor=1,6,135,255
Solid=1
;AntiAlias=1
[MeterDial_12]
Meter=Roundline
MeterStyle=RoundlineStyle
TransformationMatrix=(Cos(12*Rad(-360)/12));(-Sin(12*Rad(-360)/12));(Sin(12*Rad(-360)/12));(Cos(12*Rad(-360)/12));(#Radius#-(#Radius#*Cos(12*Rad(-360)/12))-(#Radius#*Sin(12*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(12*Rad(-360)/12))-(#Radius#*Cos(12*Rad(-360)/12)))
[MeterSquare12]
Meter=string
MeterStyle=StringStyle
TransformationMatrix=(Cos(12*Rad(-360)/12));(-Sin(12*Rad(-360)/12));(Sin(12*Rad(-360)/12));(Cos(12*Rad(-360)/12));(#Radius#-(#Radius#*Cos(12*Rad(-360)/12))-(#Radius#*Sin(12*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(12*Rad(-360)/12))-(#Radius#*Cos(12*Rad(-360)/12)))
Text=12
[MeterDial_5]
Meter=Roundline
MeterStyle=RoundlineStyle
TransformationMatrix=(Cos(1*Rad(-360)/12));(-Sin(1*Rad(-360)/12));(Sin(1*Rad(-360)/12));(Cos(1*Rad(-360)/12));(#Radius#-(#Radius#*Cos(1*Rad(-360)/12))-(#Radius#*Sin(1*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(1*Rad(-360)/12))-(#Radius#*Cos(1*Rad(-360)/12)))
[MeterSquare5]
Meter=string
MeterStyle=StringStyle
Text=1
TransformationMatrix=(Cos(1*Rad(-360)/12));(-Sin(1*Rad(-360)/12));(Sin(1*Rad(-360)/12));(Cos(1*Rad(-360)/12));(#Radius#-(#Radius#*Cos(1*Rad(-360)/12))-(#Radius#*Sin(1*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(1*Rad(-360)/12))-(#Radius#*Cos(1*Rad(-360)/12)))
[MeterDial_10]
Meter=Roundline
MeterStyle=RoundlineStyle
TransformationMatrix=(Cos(2*Rad(-360)/12));(-Sin(2*Rad(-360)/12));(Sin(2*Rad(-360)/12));(Cos(2*Rad(-360)/12));(#Radius#-(#Radius#*Cos(2*Rad(-360)/12))-(#Radius#*Sin(2*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(2*Rad(-360)/12))-(#Radius#*Cos(2*Rad(-360)/12)))
[MeterSquare10]
Meter=string
MeterStyle=StringStyle
Text=2
TransformationMatrix=(Cos(2*Rad(-360)/12));(-Sin(2*Rad(-360)/12));(Sin(2*Rad(-360)/12));(Cos(2*Rad(-360)/12));(#Radius#-(#Radius#*Cos(2*Rad(-360)/12))-(#Radius#*Sin(2*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(2*Rad(-360)/12))-(#Radius#*Cos(2*Rad(-360)/12)))
[MeterDial_15]
Meter=Roundline
MeterStyle=RoundlineStyle
TransformationMatrix=(Cos(3*Rad(-360)/12));(-Sin(3*Rad(-360)/12));(Sin(3*Rad(-360)/12));(Cos(3*Rad(-360)/12));(#Radius#-(#Radius#*Cos(3*Rad(-360)/12))-(#Radius#*Sin(3*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(3*Rad(-360)/12))-(#Radius#*Cos(3*Rad(-360)/12)))
[MeterSquare15]
Meter=string
MeterStyle=StringStyle
Text=3
TransformationMatrix=(Cos(3*Rad(-360)/12));(-Sin(3*Rad(-360)/12));(Sin(3*Rad(-360)/12));(Cos(3*Rad(-360)/12));(#Radius#-(#Radius#*Cos(3*Rad(-360)/12))-(#Radius#*Sin(3*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(3*Rad(-360)/12))-(#Radius#*Cos(3*Rad(-360)/12)))
[MeterDial_20]
Meter=Roundline
MeterStyle=RoundlineStyle
TransformationMatrix=(Cos(4*Rad(-360)/12));(-Sin(4*Rad(-360)/12));(Sin(4*Rad(-360)/12));(Cos(4*Rad(-360)/12));(#Radius#-(#Radius#*Cos(4*Rad(-360)/12))-(#Radius#*Sin(4*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(4*Rad(-360)/12))-(#Radius#*Cos(4*Rad(-360)/12)))
[MeterSquare20]
Meter=string
MeterStyle=StringStyle
Text=4
TransformationMatrix=(Cos(4*Rad(-360)/12));(-Sin(4*Rad(-360)/12));(Sin(4*Rad(-360)/12));(Cos(4*Rad(-360)/12));(#Radius#-(#Radius#*Cos(4*Rad(-360)/12))-(#Radius#*Sin(4*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(4*Rad(-360)/12))-(#Radius#*Cos(4*Rad(-360)/12)))
[MeterDial_25]
Meter=Roundline
MeterStyle=RoundlineStyle
TransformationMatrix=(Cos(5*Rad(-360)/12));(-Sin(5*Rad(-360)/12));(Sin(5*Rad(-360)/12));(Cos(5*Rad(-360)/12));(#Radius#-(#Radius#*Cos(5*Rad(-360)/12))-(#Radius#*Sin(5*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(5*Rad(-360)/12))-(#Radius#*Cos(5*Rad(-360)/12)))
[MeterSquare25]
Meter=string
MeterStyle=StringStyle
Text=5
TransformationMatrix=(Cos(5*Rad(-360)/12));(-Sin(5*Rad(-360)/12));(Sin(5*Rad(-360)/12));(Cos(5*Rad(-360)/12));(#Radius#-(#Radius#*Cos(5*Rad(-360)/12))-(#Radius#*Sin(5*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(5*Rad(-360)/12))-(#Radius#*Cos(5*Rad(-360)/12)))
[MeterDial_30]
Meter=Roundline
MeterStyle=RoundlineStyle
TransformationMatrix=(Cos(6*Rad(-360)/12));(-Sin(6*Rad(-360)/12));(Sin(6*Rad(-360)/12));(Cos(6*Rad(-360)/12));(#Radius#-(#Radius#*Cos(6*Rad(-360)/12))-(#Radius#*Sin(6*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(6*Rad(-360)/12))-(#Radius#*Cos(6*Rad(-360)/12)))
[MeterSquare30]
Meter=string
MeterStyle=StringStyle
Text=6
TransformationMatrix=(Cos(6*Rad(-360)/12));(-Sin(6*Rad(-360)/12));(Sin(6*Rad(-360)/12));(Cos(6*Rad(-360)/12));(#Radius#-(#Radius#*Cos(6*Rad(-360)/12))-(#Radius#*Sin(6*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(6*Rad(-360)/12))-(#Radius#*Cos(6*Rad(-360)/12)))
[MeterDial_35]
Meter=Roundline
MeterStyle=RoundlineStyle
TransformationMatrix=(Cos(7*Rad(-360)/12));(-Sin(7*Rad(-360)/12));(Sin(7*Rad(-360)/12));(Cos(7*Rad(-360)/12));(#Radius#-(#Radius#*Cos(7*Rad(-360)/12))-(#Radius#*Sin(7*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(7*Rad(-360)/12))-(#Radius#*Cos(7*Rad(-360)/12)))
[MeterSquare35]
Meter=string
MeterStyle=StringStyle
Text=7
TransformationMatrix=(Cos(7*Rad(-360)/12));(-Sin(7*Rad(-360)/12));(Sin(7*Rad(-360)/12));(Cos(7*Rad(-360)/12));(#Radius#-(#Radius#*Cos(7*Rad(-360)/12))-(#Radius#*Sin(7*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(7*Rad(-360)/12))-(#Radius#*Cos(7*Rad(-360)/12)))
[MeterDial_40]
Meter=Roundline
MeterStyle=RoundlineStyle
TransformationMatrix=(Cos(8*Rad(-360)/12));(-Sin(8*Rad(-360)/12));(Sin(8*Rad(-360)/12));(Cos(8*Rad(-360)/12));(#Radius#-(#Radius#*Cos(8*Rad(-360)/12))-(#Radius#*Sin(8*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(8*Rad(-360)/12))-(#Radius#*Cos(8*Rad(-360)/12)))
[MeterSquare40]
Meter=string
MeterStyle=StringStyle
Text=8
TransformationMatrix=(Cos(8*Rad(-360)/12));(-Sin(8*Rad(-360)/12));(Sin(8*Rad(-360)/12));(Cos(8*Rad(-360)/12));(#Radius#-(#Radius#*Cos(8*Rad(-360)/12))-(#Radius#*Sin(8*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(8*Rad(-360)/12))-(#Radius#*Cos(8*Rad(-360)/12)))
[MeterDial_45]
Meter=Roundline
MeterStyle=RoundlineStyle
TransformationMatrix=(Cos(9*Rad(-360)/12));(-Sin(9*Rad(-360)/12));(Sin(9*Rad(-360)/12));(Cos(9*Rad(-360)/12));(#Radius#-(#Radius#*Cos(9*Rad(-360)/12))-(#Radius#*Sin(9*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(9*Rad(-360)/12))-(#Radius#*Cos(9*Rad(-360)/12)))
[MeterSquare45]
Meter=string
MeterStyle=StringStyle
Text=9
TransformationMatrix=(Cos(9*Rad(-360)/12));(-Sin(9*Rad(-360)/12));(Sin(9*Rad(-360)/12));(Cos(9*Rad(-360)/12));(#Radius#-(#Radius#*Cos(9*Rad(-360)/12))-(#Radius#*Sin(9*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(9*Rad(-360)/12))-(#Radius#*Cos(9*Rad(-360)/12)))
[MeterDial_50]
Meter=Roundline
MeterStyle=RoundlineStyle
TransformationMatrix=(Cos(10*Rad(-360)/12));(-Sin(10*Rad(-360)/12));(Sin(10*Rad(-360)/12));(Cos(10*Rad(-360)/12));(#Radius#-(#Radius#*Cos(10*Rad(-360)/12))-(#Radius#*Sin(10*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(10*Rad(-360)/12))-(#Radius#*Cos(10*Rad(-360)/12)))
[MeterSquare50]
Meter=string
MeterStyle=StringStyle
Text=10
TransformationMatrix=(Cos(10*Rad(-360)/12));(-Sin(10*Rad(-360)/12));(Sin(10*Rad(-360)/12));(Cos(10*Rad(-360)/12));(#Radius#-(#Radius#*Cos(10*Rad(-360)/12))-(#Radius#*Sin(10*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(10*Rad(-360)/12))-(#Radius#*Cos(10*Rad(-360)/12)))
[MeterDial_55]
Meter=Roundline
MeterStyle=RoundlineStyle
TransformationMatrix=(Cos(11*Rad(-360)/12));(-Sin(11*Rad(-360)/12));(Sin(11*Rad(-360)/12));(Cos(11*Rad(-360)/12));(#Radius#-(#Radius#*Cos(11*Rad(-360)/12))-(#Radius#*Sin(11*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(11*Rad(-360)/12))-(#Radius#*Cos(11*Rad(-360)/12)))
[MeterSquare55]
Meter=string
MeterStyle=StringStyle
Text=11
TransformationMatrix=(Cos(11*Rad(-360)/12));(-Sin(11*Rad(-360)/12));(Sin(11*Rad(-360)/12));(Cos(11*Rad(-360)/12));(#Radius#-(#Radius#*Cos(11*Rad(-360)/12))-(#Radius#*Sin(11*Rad(-360)/12)));(#Radius#+(#Radius#*Sin(11*Rad(-360)/12))-(#Radius#*Cos(11*Rad(-360)/12)))
[MeterP]
Meter=STRING
X=(#Radius#+Sin(Rad([Angle]))*([MeterP:H]-5*2)/2)
Y=(#Radius#+([MeterP:H]-5*2)/2-Cos(Rad([Angle]))*([MeterP:H]-5*2)/2)
Padding=15,5,15,5
FontColor=220,220,220
FontEffectColor=0,0,0
StringEffect=Shadow
SolidColor=0,0,0,150
FontSize=28
FontFace=Segoe UI
StringStyle=BOLD
StringAlign=CenterCenter
AntiAlias=1
Text=P
Angle=(Rad([Angle]))
DynamicVariables=1
-
- Rainmeter Sage
- Posts: 16110
- Joined: October 11th, 2010, 6:27 pm
- Location: Gheorgheni, Romania
Re: Transformation matrix and circle issue
Finally here is the promised code. Note that this time two transformation matrices are applied, the one posted into my code and the other which rotates the string with 180 degrees, but keeps it unmoved. This second transformation matrix is the following one: TransformationMatrix=(Cos(Rad(180)));(-Sin(Rad(180)));(Sin(Rad(180)));(Cos(Rad(180)));([#CURRENTSECTION#:X]-([#CURRENTSECTION#:X]*Cos(Rad(180)))-([#CURRENTSECTION#:Y]*Sin(Rad(180))));([#CURRENTSECTION#:Y]+([#CURRENTSECTION#:X]*Sin(Rad(180)))-([#CURRENTSECTION#:Y]*Cos(Rad(180)))).
Now having these two matrices, in order to get them applied both, you have to multiply them together, according to matrices multiplication rules (probably average people don't know these rules, so I multiplied them together). Here is the result:
Code: Select all
[MeterSquare30]
...
TransformationMatrix=((Cos(6*Rad(-360)/12))*(Cos(Rad(180)))-(Sin(6*Rad(-360)/12))*(Sin(Rad(180))));((-Sin(6*Rad(-360)/12))*(Cos(Rad(180)))-(Cos(6*Rad(-360)/12))*(Sin(Rad(180))));((Cos(6*Rad(-360)/12))*(Sin(Rad(180)))+(Sin(6*Rad(-360)/12))*(Cos(Rad(180))));((-Sin(6*Rad(-360)/12))*(Sin(Rad(180)))+(Cos(6*Rad(-360)/12))*(Cos(Rad(180))));((Cos(6*Rad(-360)/12))*([#CURRENTSECTION#:X]-([#CURRENTSECTION#:X]*Cos(Rad(180)))-([#CURRENTSECTION#:Y]*Sin(Rad(180))))+(Sin(6*Rad(-360)/12))*([#CURRENTSECTION#:Y]+([#CURRENTSECTION#:X]*Sin(Rad(180)))-([#CURRENTSECTION#:Y]*Cos(Rad(180))))+(#Radius#-(#Radius#*Cos(6*Rad(-360)/12))-(#Radius#*Sin(6*Rad(-360)/12))));((-Sin(6*Rad(-360)/12))*([#CURRENTSECTION#:X]-([#CURRENTSECTION#:X]*Cos(Rad(180)))-([#CURRENTSECTION#:Y]*Sin(Rad(180))))+(Cos(6*Rad(-360)/12))*([#CURRENTSECTION#:Y]+([#CURRENTSECTION#:X]*Sin(Rad(180)))-([#CURRENTSECTION#:Y]*Cos(Rad(180))))+(#Radius#+(#Radius#*Sin(6*Rad(-360)/12))-(#Radius#*Cos(6*Rad(-360)/12))))