Skip to content

Instantly share code, notes, and snippets.

@dreamr
Created July 20, 2011 22:18
Show Gist options
  • Save dreamr/1096072 to your computer and use it in GitHub Desktop.
Save dreamr/1096072 to your computer and use it in GitHub Desktop.
## Array Virtualization
### General Rules
Calculate based on a normalized MountingArray and SolarArray
* This will be the base x and y coordinates with no missing panels
* Everything is calculated in Landscape and flipped 90deg for Portrait
Represent the MountingArea in the codebase
Represent the SystemComponents in the codebase
Build SolarArray based on MountingVariables (minus the footing)
Center the SolarArray on the MountingArea
Mounting Space in panels + 1/2
Track how many rafters in MS based on RafterSpacing
Min Cant is 2" (inside or outside panel)
Max Cantilever is 1/3 of the allowable spacing from EngCalc
Calculate Left Cantilever
* MountingArea vs SolarArray vs RafterSpacing
Calculate Right Cantilever
* Simply from the left!
Build the virtual SolarArray
Place MountingFeet onto the MountingArea
Overlay the SolarArray
Check Rules
* Shift Array if needed!
Apply ZSII-Bigfoot and ZSII-BlackDog modules (components, rules and operations)
UI should have option to hide skirt from display
UI should show the skirt by default
UI overrides do not effect the visual representation of the array
## Algebra
* MAL = Mounting Area Length
* SP = Panel Spacing (1/2")
* AR = Available Rafters
* PL = Panel Length
* PH = Panel Height
* TPL = Total Panel Length
* TPH = Total Panel height
* PIR = Panels in Row
* PIC = Panels in Column
Given a mounting area of 20'x20' and a rafter spacing of 16" we have 3 rows and 6 columns, ala:
Panel Rows
PL SP TPL
64.5" + 0.5" = 65"
MAL TPL PIR
240" / 65" = 3 (floor it)
Panel Columns
PH SP TPH
38.7" + 0.5" = 39.2"
MAH TPH PIC
240" / 39.2" = 6 (floor it)
Rafters Available
MAL RS AR
240" / 16" = 15
The Array Builder (AB) should do it exactly like an installer would to create the initial array. This is the perfect fittable array.
1) Take the Mounting Area Widths and Heights (MA) and divide them
by the spaced_module widths and heights to find out how many
we can fit in the MA.
a) A Spaced Module (SM) includes the 0.5" gap on the right side
unless the SM is a right outer edge module
2) Start at the bottom left of the Mounting Area (MA) and finds the first
rafter according to the Build Rules (BR) (which takes into account and
provides access to system stuff like components and rules)
3) Mark the x location and find the y location by centering the Solar
Array's (SA) height against the Mounting Area's (MA) height and again
marking the y location
4) At the first x/y location the AB drops the bottom left foot.
5) Now, according to the Build Rules (BR), the AB drops feet in a row to
the end.
6) Now we move our y position and duplicate our row above the first.
7) We can now lay a panel in the real world but here we wont.
8) Since we are dealing with a perfect array, we can clone those rows on up
based on the size of the Spaced Panel (SP) width (again, compensating
for the outside right column)
9) We now place all of our Spaced Panels (SP) down in order according to the
BR on the first row, and then clone upwards to complete the panels
10) Based on where the SPs and the Leveling Feet (LF) are we can now appl
the BRs again to place the interlocks in place based on where the panels
and feet are
We now render this. Any additions or shifts are from this build.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment