Helix Struts:
This section explains how to add horizontal struts within a double helix. To start, choose what modules will comprise each of your struts. For the method shown in this guide, you should have an odd number of modules of equal length. However, the method can be adjusted to accommodate unequal length modules or even numbers of modules. Find the length of a module in the strut, abbreviated
'LStrut', and the total length of the strut,
'LStrutTotal'.
Helix construction:
Constructing a helix with struts will use the same method previously described but with different formulas. It will be very difficult to make this type of helix with a perfectly integer number of modules per revolution but as mentioned previously, this is largely unimportant as it is difficult to notice. To start, choose a phase shift , abbreviated
'Phi', a pitch value,
'P', and starting height,
'Y0', for your double helix. Find the length of each module in the helix, abbreviated
'L'. Calculate the radius of your helix,
'R', using
R = LStrutTotal / (2 * sin(Phi / 2))
Additionally, we calculate the horizontal and vertical length of the now rotated module segment, abbreviated
'LH' and
'LV' respectively, using the following:
LH = L * cos(Pitch)
LV = L * sin(Pitch)
Next, we calculate the change in angle between each module in the helix,
'DT', using
DT = 2 * arcsin(LH / (2 * R))
Placement is similar to the method described previously except we will be placing two helices simultaneously to construct a double helix. We start with
Theta = 0,
Y1 = Y0, and
Y2 = Y0, then calculate the position (
X1,
X2,
Y1,
Y2,
Z1, and
Z2) and rotation (
Yaw1,
Yaw2, and
Pitch) values using the following equations:
X1start = R * cos(Theta - DT / 2)
Z1start = R * sin(Theta - DT / 2)
X1end = R * cos(Theta + DT / 2)
Z1end = R * sin(Theta + DT / 2)
X2start = R * cos(Theta + Phi - DT / 2)
Z2start = R * sin(Theta + Phi - DT / 2)
X2end = R * cos(Theta + Phi + DT / 2)
Z2end = R * sin(Theta + Phi + DT / 2)
Helix 1 values:
X1 = (X1start + X1end) / 2
Y1 = Y1 + LV
Z1 = (Z1start + Z1end) / 2
Yaw1 = - Theta * 180 / pi
Pitch = P * 180 / pi
Helix 2 values:
X2 = (X2start + X2end) / 2
Y2 = Y2 + LV
Z2 = (Z2start + Z2end) / 2
Yaw2 = - (Theta + Phi) * 180 / pi
Pitch = P * 180 / pi
Theta = Theta + DT
Strut Placement:
Helix struts should be placed as the helix is being constructed. So if, for example, you decide to place a strut every 3 modules in the helix, you will go through the following steps immediately following the placement of the 1st, 4th, 7th, etc. module in the double helix. Thus if you are placing the strut for the 7th module in the double helix, the values
'X1',
'Y1', etc refer to the
X1 and
Y1 values for the 7th module. To construct the strut, we begin by placing the center module first and then work our way outwards. To start, calculate the central position between the two modules in the double helix that the strut will span between, abbreviated
'Cenx',
'CenY', and
'CenZ'. These will serve as the
X,
Y, and
Z coordinates of the center module
X = CenX = (X1 + X2) / 2
Y = CenY = Y1
Z = CenZ = (Z1 + Z2) / 2
as well as the rotation of the strut,
'CenYaw', with
Yaw = CenYaw = (Yaw1 + Yaw2)/2
To place the modules on either side of the central module of the strut, we calculate the offset of the modules in the X and Z direction, abbreviated
'XOffset' and
'ZOffset' (remember the yaw values have been converted to degrees so we convert them back to radians)
XOffset = LStrut * sin(CenYaw * pi / 180)
ZOffset = LStrut * cos(CenYaw * pi / 180)
The modules can then be placed using
X = CenX +/- XOffset
Y = CenY
Z = CenZ +/- ZOffset
Yaw = CenYaw
Placing further modules (4th and 5th module of the strut),
X = CenX +/- 2 * XOffset
Y = CenY
Z = CenZ +/- 2 * ZOffset
Yaw = CenYaw
and so on...
Rotation of vertical circle around a ring:
In this section, we go over the method used to rotate vertical circles around a horizontal circle (i.e. hexagonal defense platform rings). This method will use many of the same methods as the basic circle placement. In order to differentiate between the vertical circles being rotated and the horizontal circle around which we are rotating them, the horizontal circle will be referred to as the 'ring'. To begin, choose the module which you will use to create each circle and find it's length,
'L'. Choose how many of these modules will be in each circle,
'N', and how many circles will be in the ring,
'NRing'. Next, we calculate the change in angle between each module in a vertical circle,
'DT', and the circle radius,
'R' with
DT = 2 * pi / N
R = L / ( 2 * Sin(DT / 2) )
Ring calculations:
Now, we switch to calculating the values we need to form the ring of circles. Decide whether you want the circles to be disconnected or connected, which will determine which basic circle method we will use. From here, follow the same steps for the basic circular placement described previously for either disconnected or connected modules using
'NRing' instead of
'N' and using
2*R instead of
'L'. Do not use the
DT value we calculated above as that is for the vertical circle, you will need to calculate a new
'DTRing' value for the ring using the chosen method. Once you have calculated the
X,
Z, and
Yaw values, you do not need to place a module at these positions but keep these coordinates for later. These will be referred to as
'XRing',
'ZRing', and
'YawRing' later on and you should have an
NRing number of values for each of these (i.e. if
NRing=7, you should have 7 values for
XRing,
ZRing, and
YawRing).
Vertical circle placement:
Finally, we place the vertical circles using the cyclical polygon method with the
DT and
R values calculated above and
Theta = 0 but using the following formulas (remember
YawRing was converted to degrees but we perform calculations in radians)
ThetaRing = -YawRing * pi / 180
Xstart = R * cos(Theta - DT / 2) * sin(ThetaRing)
Ystart = R * sin(Theta - DT / 2)
Zstart = R * cos(Theta - DT / 2) * cos(ThetaRing)
Xend = R * cos(Theta + DT / 2) * sin(ThetaRing)
Yend = R * sin(Theta + DT / 2)
Zend = R * cos(Theta + DT / 2) * cos(ThetaRing)
X = XRing - (Xstart + Xend) / 2
Y = (Ystart + Yend) / 2
Z = ZRing + (Zstart + Zend) / 2
Yaw = YawRing
Pitch = Theta * 180 / pi + 90
Theta = Theta + DT
For the first vertical circle, you will use the first set of values of
XRing,
ZRing, and
YawRing and place modules until the circle is complete. Then move on to the second set of
XRing,
ZRing, and
YawRing values to place the second circle and so on until you have place all of the circles around the ring.
