Design Portfolio

Page 1

SubProject_Multiplying_With_Scale_Shift_AND_SLOTS()’VariablesDim Box(17) As Point3dDim Slots(4) As Point3dDim PtScore(4) As Point3dDim Pt1 As Point3dDim Pt2 As Point3dDim Pt3 As Point3dDim Pt4 As Point3dDim Pt5 As Point3dDim Pt6 As Point3dDim ArmLength As DoubleDim TriLength As DoubleDim LatchSegment As DoubleDim LatchDepth As DoubleDim ScaleUP As DoubleDim i As IntegerDim Max As IntegerDim Rotation As Double ‘ParametersTriLength = ‘Two feet to begin withScaleUP = 1.045‘Percentage to increase per LoopRotation = (0.07 * TriLength’Rotation Decimal must fall between -0.07 < x < 0.07 Thicontrols the twisting of the spire, clockwise = +, counterclockwise = -’X-Axis Spacing of PiecesMax = ‘Number of Pieces’Call out first start pointBox(0).X = 10Box(0).Y = 1 ‘OperationsFor i = 1 To Max’Set ScalingTriLength = TriLength * ScaleUPArmLength = TriLength * ScaleUP’Get Box PointsBox(0).X = 10 + Spacing * i * ScaleUP * 1.75Box(0).Y = 10Box(1).X = Box(0).X - TriLengthBox(1).Y = Box(0).YBox(2).X = Box(1).XBox(2).Y = Box(1).Y + TriLengthBox(3).X = Box(0).XBox(3).Y = Box(2).YBox(4).X = Box(0).X - TriLength / 2Box(4).Y = Box(1).Y + TriLength / 2’Draw the BoxDone = DrawLine(Box(0), Box(1))Done = DrawLine(Box(1), Box(2))Done = DrawLine(Box(2), Box(3))’Get the Midpoints’Then Get the perpendicular pointsPt1 = GetLineDivisorPoint(Box(0), Box(1), 2, 1)Pt2 = GetLineDivisorPoint(Box(1), Box(2), 2, 1)Pt3 = GetLineDivisorPoint(Box(2), Box(3), 2, 1)Pt4 = GetPerpendicularLinePoint(Pt1, Box(1), ArmLength)Pt5 = GetPerpendicularLinePoint(Pt2, Box(2), ArmLengthPt6 = GetPerpendicularLinePoint(Pt3, Box(3), ArmLength)’Draw the ArmsDone = DrawLine(Box(0), Pt4)Done = DrawLine(Box(1), Pt4)Done = DrawLine(Box(1), Pt5)Done = DrawLine(Box(2), Pt5)Done = DrawLine(Box(2), Pt6)Done = DrawLine(Box(3), Pt6)’Draw the Slots BottomSlots(0).X = Pt1.X - RotationSlots(0).Y = Pt1.Y - (ArmLength / Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0). YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots MiddleSlots(0).X = Pt2.X - (ArmLength / 5)Slots(0).Y = Pt2.Y + RotationSlots(1).X = Slots(0).XSlots(1).Y = Slots(0).Y + (TriLength * 0.25)Slots(2).Y = Slots(0).Y - (TriLength * 0.25)Slots(2).X = Slots(0).(3).X = Slots(0).X - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (TriLength * 0.2)Slots(4).X = Slots(0).X - (ArmLength / 24)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots Top Slots(0).X = Pt3.X + RotationSlots(0).Y = Pt3.Y + (ArmLength / 5)Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y + (ArmLength / 24)Slots(4).Y = Slots(0).Y + (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Score Lines BottomPtScore(0).X = Pt4.XPtScore(0).Y = Pt4.Y + (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(1), Box(0), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(0), Pt4, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(0), Box(1), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(1), Pt4, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt4)Done = DrawLine(PtScore(3), Pt4)Done = DrawLine(PtScore(4), Pt4)Done = DrawLine(Box(1), Box(4))Done = DrawLine(Box(2), Box(4))’Draw the Score Lines MiddlePtScore(0).X = Pt5.X + (ArmLength * 0.5)PtScore(0).Y = Pt5.YPtScore(1) = GetTranslatedLinePoint(Box(2), Box(1), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(1), Pt5, PtScore(0), PtScore(1))PtScore(2) = GetLineIntersectionPoint(Box(2), Pt5, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt5)Done = DrawLine(PtScore(3), Pt5)Done = DrawLine(PtScore(4), Pt5)’Draw the Score Lines TopPtScore(0).X = Pt6.XPtScore(0).Y = Pt6.Y - (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(3), Box(2), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(2), Pt6, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(2), Box(3), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(3), Pt6, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt6)Done = DrawLine(PtScore(3), Pt6)Done = DrawLine(PtScore(4), Pt6)‘Get the Latch Pointsout Latch Segment and DepthLatchSegment = GetDistance(Box(3), Box(4)) / 4LatchDepth = GetDistance(Box(3), Box(4)) / 8’Latches for Box(3) to Box(4)Box(7) = GetLineDivisorPoint(Box(3), Box(4), 4, 1)Box(8) = GetLineDivisorPoint(Box(3), Box(4), 4, 2)Box(11) = GetLineDivisorPoint(Box(3), Box(4), 4, 3)Box(5) = GetPerpendicularLinePoint(Box(3), Box(4), LatchDepth)Box(6) = GetTranslatedLinePoint(Box(4), Box(1), Box(5))Box(6) = AdjustLineLength(Box(5), Box(6), LatchSegment * 1.33)Box(9).X = Box(8).X + LatchSegment * 0.588235294117647Box(9).Y = Box(8).Y - LatchSegment / 6Box(10) = GetTranslatedLinePoint(Box(5), Box(6), Box(9))Box(10) = AdjustLineLength(Box(9), Box(10), LatchSegment * 1.5)’Draw the Top LatchesDone = DrawLine(Box(3), Box(5))Done = DrawLine(Box(5), Box(6))Done = DrawLine(Box(6), Box(7))Done = DrawLine(Box(7), Box(8))Done = DrawLine(Box(8), Box(9))Done = DrawLine(Box(9), Box(10))Done = DrawLine(Box(10), Box(11))Done = DrawLine(Box(11), Box(4))’Latches for Box(4) to Box(0)Box(13) = GetLineDivisorPoint(Box(4), Box(0), 4, 1)Box(14) = GetLineDivisorPoint(Box(4), Box(0), 4, 2)Box(17) = GetLineDivisorPoint(Box(4), Box(0), 4, 3)Box(12) = GetPerpendicularLinePoint(Box(13), Box(0), LatchDepth)Box(12).X = Box(13).X + LatchSegment / 4Box(12).Y = Box(13).Y + LatchSegment / 6Box(12) = AdjustLineLength(Box(13), Box(12), LatchDepth)Box(15).X = Box(14).X + LatchSegment * 0.588235294117647Box(15).Y = Box(14).Y + LatchSegment / 6Box(16) = GetTranslatedLinePoint(Box(17), Box(0), Box(15))Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Box(15) = AdjustLineLength(Box(16), Box(15), LatchSegment * 2)Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Done = DrawLine(Box(4), Box(12))Done = DrawLine(Box(12), Box(13))Done = DrawLine(Box(13), Box(14))Done = DrawLine(Box(14), Box(15))Done = DrawLine(Box(15), Box(16))Done = DrawLine(Box(16), Box(17))Done = DrawLine(Box(17), Box(0))’Draw the Score LinesDone = DrawLine(Box(3), Box(7))Done = DrawLine(Box(8), Box(11))Done = DrawLine(Box(4), Box(13))Done = DrawLine(Box(14), Box(17))Next iEnd SuSubProject_Multiplying_With_Scale_Shift_AND_SLOTS()’VariablesDim Box(17) As Point3dDim Slots(4) As Point3dDim PtScore(4) As Point3dDim Pt1 As Point3dDim Pt2 As Point3dDim Pt3 As Point3dDim Pt4 As Point3dDim Pt5 As Point3dDim Pt6 As Point3dDim ArmLength As DoubleDim TriLength As DoubleDim LatchSegment As DoubleDim LatchDepth As DoubleDim ScaleUP As DoubleDim i As IntegerDim Max As IntegerDim Rotation As Double ‘ParametersTriLength = ‘Two feet to begin withScaleUP = 1.045‘Percentage to increase per LoopRotation = (0.07 * TriLength’Rotation Decimal must fall between -0.07 < x < 0.07 Thicontrols the twisting of the spire, clockwise = +, counterclockwise = -’X-Axis Spacing of PiecesMax = ‘Number of Pieces’Call out first start pointBox(0).X = 10Box(0).Y = 1 ‘OperationsFor i = 1 To Max’Set ScalingTriLength = TriLength * ScaleUPArmLength = TriLength * ScaleUP’Get Box PointsBox(0).X = 10 + Spacing * i * ScaleUP * 1.75Box(0).Y = 10Box(1).X = Box(0).X - TriLengthBox(1).Y = Box(0).YBox(2).X = Box(1).XBox(2).Y = Box(1).Y + TriLengthBox(3).X = Box(0).XBox(3).Y = Box(2).YBox(4).X = Box(0).X - TriLength / 2Box(4).Y = Box(1).Y + TriLength / 2’Draw the BoxDone = DrawLine(Box(0), Box(1))Done = DrawLine(Box(1), Box(2))Done = DrawLine(Box(2), Box(3))’Get the Midpoints’Then Get the perpendicular pointsPt1 = GetLineDivisorPoint(Box(0), Box(1), 2, 1)Pt2 = GetLineDivisorPoint(Box(1), Box(2), 2, 1)Pt3 = GetLineDivisorPoint(Box(2), Box(3), 2, 1)Pt4 = GetPerpendicularLinePoint(Pt1, Box(1), ArmLength)Pt5 = GetPerpendicularLinePoint(Pt2, Box(2), ArmLengthPt6 = GetPerpendicularLinePoint(Pt3, Box(3), ArmLength)’Draw the ArmsDone = DrawLine(Box(0), Pt4)Done = DrawLine(Box(1), Pt4)Done = DrawLine(Box(1), Pt5)Done = DrawLine(Box(2), Pt5)Done = DrawLine(Box(2), Pt6)Done = DrawLine(Box(3), Pt6)’Draw the Slots BottomSlots(0).X = Pt1.X - RotationSlots(0).Y = Pt1.Y - (ArmLength / Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots MiddleSlots(0).X = Pt2.X - (ArmLength / 5)Slots(0).Y = Pt2.Y + RotationSlots(1).X = Slots(0).XSlots(1).Y = Slots(0).Y + (TriLength * 0.25)Slots(2).Y = Slots(0).Y - (TriLength * 0.25)Slots(2).X = Slots(0).(3).X = Slots(0).X - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (TriLength * 0.2)Slots(4).X = Slots(0).X - (ArmLength / 24)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots Top Slots(0).X = Pt3.X + RotationSlots(0).Y = Pt3.Y + (ArmLength / 5)Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y + (ArmLength / 24)Slots(4).Y = Slots(0).Y + (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Score Lines BottomPtScore(0).X = Pt4.XPtScore(0).Y = Pt4.Y + (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(1), Box(0), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(0), Pt4, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(0), Box(1), PtScore(0))PtScore(2) = GetLineIntersectionP oint(Box(1), Pt4, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt4)Done = DrawLine(PtScore(3), Pt4)Done = DrawLine(PtScore(4), Pt4)Done = DrawLine(Box(1), Box(4)) Done = DrawLine(Box(2), Box(4))’Draw the Score Lines MiddlePtScore(0).X = Pt5.X + (ArmLength * 0.5)PtScore(0).Y = Pt5.YPtScore(1) = GetTranslatedLinePoint(Box(2), Box(1), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(1), Pt5, PtScore(0), PtScore(1))PtScore(2) = GetLineIntersectionPoint(Box(2), Pt5, PtScore(0), PtScore(2)) PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt5)Done = DrawLine(PtScore(3), Pt5)Done = DrawLine(PtScore(4), Pt5)’Draw the Score Lines TopPtScore(0).X = Pt6.XPtScore(0).Y = Pt6.Y (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(3), Box(2), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(2), Pt6, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(2), Box(3), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(3), Pt6, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt6)Done = DrawLine(PtScore(3), Pt6)Done = DrawLine(PtScore(4), Pt6)‘Get the Latch Pointsout Latch Segment and DepthLatchSegment = GetDistance(Box(3), Box(4)) / 4LatchDepth = GetDistance(Box(3), Box(4)) / 8’Latches for Box(3) to Box(4)Box(7) = GetLineDivisorPoint(Box(3), Box(4), 4, 1)Box(8) = GetLineDivisorPoint(Box(3), Box(4), 4, 2)Box(11) = GetLineDivisorPoint(Box(3), Box(4), 4, 3)Box(5) = GetPerpendicularLinePoint(Box(3), Box(4), LatchDepth)Box(6) = GetTranslatedLinePoint(Box(4), Box(1), Box(5))Box(6) = AdjustLineLength(Box(5), Box(6), LatchSegment * 1.33)Box(9).X = Box(8).X + LatchSegment * 0.588235294117647Box(9).Y = Box(8).Y - LatchSegment / 6Box(10) = GetTranslatedLinePoint(Box(5), Box(6), Box(9))Box(10) = AdjustLineLength(Box(9), Box(10), LatchSegment * 1.5)’Draw the Top LatchesDone = DrawLine(Box(3), Box(5))Done = DrawLine(Box(5), Box(6))Done = DrawLine(Box(6), Box(7))Done = DrawLine(Box(7), Box(8))Done = DrawLine(Box(8), Box(9))Done = DrawLine(Box(9), Box(10))Done = DrawLine(Box(10), Box(11))Done = DrawLine(Box(11), Box(4))’Latches for Box(4) to Box(0)Box(13) = GetLineDivisorPoint(Box(4), Box(0), 4, 1)Box(14) = GetLineDivisorPoint(Box(4), Box(0), 4, 2)Box(17) = GetLineDivisorPoint(Box(4), Box(0), 4, 3)Box(12) = GetPerpendicularLinePoint(Box(13), Box(0), LatchDepth)Box(12).X = Box(13).X + LatchSegment / 4Box(12).Y = Box(13).Y + LatchSegment / 6Box(12) = AdjustLineLength(Box(13), Box(12), LatchDepth)Box(15).X = Box(14).X + LatchSegment * 0.588235294117647Box(15).Y = Box(14).Y + LatchSegment / 6Box(16) = GetTranslatedLinePoint(Box(17), Box(0), Box(15))Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Box(15) = AdjustLineLength(Box(16), Box(15), LatchSegment * 2)Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Done = DrawLine(Box(4), Box(12))Done = DrawLine(Box(12), Box(13))Done = DrawLine(Box(13), Box(14))Done = DrawLine(Box(14), Box(15))Done = DrawLine(Box(15), Box(16))Done = DrawLine(Box(16), Box(17))Done = DrawLine(Box(17), Box(0))’Draw the Score LinesDone = DrawLine(Box(3), Box(7))Done = DrawLine(Box(8), Box(11))Done = DrawLine(Box(4), Box(13))Done = DrawLine(Box(14), Box(17))Next iEnd Sub SubProject_Multiplying_With_Scale_Shift_AND_SLOTS()’VariablesDim Box(17) As Point3dDim Slots(4) As Point3dDim PtScore(4) As Point3dDim Pt1 As Point3dDim Pt2 As Point3dDim Pt3 As Point3dDim Pt4 As Point3dDim Pt5 As Point3dDim Pt6 As Point3dDim ArmLength As DoubleDim TriLength As DoubleDim LatchSegment As DoubleDim LatchDepth As DoubleDim ScaleUP As DoubleDim i As IntegerDim Max As IntegerDim Rotation As Double ‘ParametersTriLength = ‘Two feet to begin withScaleUP = 1.045‘Percentage to increase per LoopRotation = (0.07 * TriLength’Rotation Decimal must fall between -0.07 < x < 0.07 Thicontrols the twisting of the spire, clockwise = +, counterclockwise = -’X-Axis Spacing of PiecesMax = ‘Number of Pieces’Call out first start pointBox(0).X = 10Box(0).Y = 1 ‘OperationsFor i = 1 To Max’Set ScalingTriLength = TriLength * ScaleUPArmLength = TriLength * ScaleUP’Get Box PointsBox(0).X = 10 + Spacing * i * ScaleUP * 1.75Box(0).Y = 10Box(1).X = Box(0).X - TriLengthBox(1).Y = Box(0).YBox(2).X = Box(1).XBox(2).Y = Box(1).Y + TriLengthBox(3).X = Box(0).XBox(3).Y = Box(2).YBox(4).X = Box(0).X - TriLength / 2Box(4).Y = Box(1).Y + TriLength / 2’Draw the BoxDone = DrawLine(Box(0), Box(1))Done = DrawLine(Box(1), Box(2))Done = DrawLine(Box(2), Box(3))’Get the Midpoints’Then Get the perpendicular pointsPt1 = GetLineDivisorPoint(Box(0), Box(1), 2, 1)Pt2 = GetLineDivisorPoint(Box(1), Box(2), 2, 1)Pt3 = GetLineDivisorPoint(Box(2), Box(3), 2, 1)Pt4 = GetPerpendicularLinePoint(Pt1, Box(1), ArmLength)Pt5 = GetPerpendicularLinePoint(Pt2, Box(2), ArmLengthPt6 = GetPerpendicularLinePoint(Pt3, Box(3), ArmLength)’Draw the ArmsDone = DrawLine(Box(0), Pt4)Done = DrawLine(Box(1), Pt4)Done = DrawLine(Box(1), Pt5)Done = DrawLine(Box(2), Pt5)Done = DrawLine(Box(2), Pt6)Done = DrawLine(Box(3), Pt6)’Draw the Slots BottomSlots(0).X = Pt1.X - RotationSlots(0).Y = Pt1.Y - (ArmLength / Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0). YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots MiddleSlots(0).X = Pt2.X - (ArmLength / 5)Slots(0).Y = Pt2.Y + RotationSlots(1).X = Slots(0).XSlots(1).Y = Slots(0).Y + (TriLength * 0.25)Slots(2).Y = Slots(0).Y - (TriLength * 0.25)Slots(2).X = Slots(0).(3).X = Slots(0).X - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (TriLength * 0.2)Slots(4).X = Slots(0).X - (ArmLength / 24)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots Top Slots(0).X = Pt3.X + RotationSlots(0).Y = Pt3.Y + (ArmLength / 5)Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y + (ArmLength / 24)Slots(4).Y = Slots(0).Y + (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Score Lines BottomPtScore(0).X = Pt4.XPtScore(0).Y = Pt4.Y + (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(1), Box(0), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(0), Pt4, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(0), Box(1), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(1), Pt4, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt4)Done = DrawLine(PtScore(3), Pt4)Done = DrawLine(PtScore(4), Pt4)Done = DrawLine(Box(1), Box(4))Done = DrawLine(Box(2), Box(4))’Draw the Score Lines MiddlePtScore(0).X = Pt5.X + (ArmLength * 0.5)PtScore(0).Y = Pt5.YPtScore(1) = GetTranslatedLinePoint(Box(2), Box(1), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(1), Pt5, PtScore(0), PtScore(1))PtScore(2) = GetLineIntersectionPoint(Box(2), Pt5, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt5)Done = DrawLine(PtScore(3), Pt5)Done = DrawLine(PtScore(4), Pt5)’Draw the Score Lines TopPtScore(0).X = Pt6.XPtScore(0).Y = Pt6.Y - (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(3), Box(2), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(2), Pt6, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(2), Box(3), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(3), Pt6, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt6)Done = DrawLine(PtScore(3), Pt6)Done = DrawLine(PtScore(4), Pt6)‘Get the Latch Pointsout Latch Segment and DepthLatchSegment = GetDistance(Box(3), Box(4)) / 4LatchDepth = GetDistance(Box(3), Box(4)) / 8’Latches for Box(3) to Box(4)Box(7) = GetLineDivisorPoint(Box(3), Box(4), 4, 1)Box(8) = GetLineDivisorPoint(Box(3), Box(4), 4, 2)Box(11) = GetLineDivisorPoint(Box(3), Box(4), 4, 3)Box(5) = GetPerpendicularLinePoint(Box(3), Box(4), LatchDepth)Box(6) = GetTranslatedLinePoint(Box(4), Box(1), Box(5))Box(6) = AdjustLineLength(Box(5), Box(6), LatchSegment * 1.33)Box(9).X = Box(8).X + LatchSegment * 0.588235294117647Box(9).Y = Box(8).Y - LatchSegment / 6Box(10) = GetTranslatedLinePoint(Box(5), Box(6), Box(9))Box(10) = AdjustLineLength(Box(9), Box(10), LatchSegment * 1.5)’Draw the Top LatchesDone = DrawLine(Box(3), Box(5))Done = DrawLine(Box(5), Box(6))Done = DrawLine(Box(6), Box(7))Done = DrawLine(Box(7), Box(8))Done = DrawLine(Box(8), Box(9))Done = DrawLine(Box(9), Box(10))Done = DrawLine(Box(10), Box(11))Done = DrawLine(Box(11), Box(4))’Latches for Box(4) to Box(0)Box(13) = GetLineDivisorPoint(Box(4), Box(0), 4, 1)Box(14) = GetLineDivisorPoint(Box(4), Box(0), 4, 2)Box(17) = GetLineDivisorPoint(Box(4), Box(0), 4, 3)Box(12) = GetPerpendicularLinePoint(Box(13), Box(0), LatchDepth)Box(12).X = Box(13).X + LatchSegment / 4Box(12).Y = Box(13).Y + LatchSegment / 6Box(12) = AdjustLineLength(Box(13), Box(12), LatchDepth)Box(15).X = Box(14).X + LatchSegment * 0.588235294117647Box(15).Y = Box(14).Y + LatchSegment / 6Box(16) = GetTranslatedLinePoint(Box(17), Box(0), Box(15))Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Box(15) = AdjustLineLength(Box(16), Box(15), LatchSegment * 2)Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Done = DrawLine(Box(4), Box(12))Done = DrawLine(Box(12), Box(13))Done = DrawLine(Box(13), Box(14))Done = DrawLine(Box(14), Box(15))Done = DrawLine(Box(15), Box(16))Done = DrawLine(Box(16), Box(17))Done = DrawLine(Box(17), Box(0))’Draw the Score LinesDone = DrawLine(Box(3), Box(7))Done = DrawLine(Box(8), Box(11))Done = DrawLine(Box(4), Box(13))Done = DrawLine(Box(14), Box(17))Next iEnd Sub SubProject_Multiplying_With_Scale_Shift_AND_SLOTS()’VariablesDim Box(17) As Point3dDim Slots(4) As Point3dDim PtScore(4) As Point3dDim Pt1 As Point3dDim Pt2 As Point3dDim Pt3 As Point3dDim Pt4 As Point3dDim Pt5 As Point3dDim Pt6 As Point3dDim ArmLength As DoubleDim TriLength As DoubleDim LatchSegment As DoubleDim LatchDepth As DoubleDim ScaleUP As DoubleDim i As IntegerDim Max As IntegerDim Rotation As Double ‘ParametersTriLength = ‘Two feet to begin withScaleUP = 1.045‘Percentage to increase per LoopRotation = (0.07 * TriLength’Rotation Decimal must fall between -0.07 < x < 0.07 Thicontrols the twisting of the spire, clockwise = +, counterclockwise = -’X-Axis Spacing of PiecesMax = ‘Number of Pieces’Call out first start pointBox(0).X = 10Box(0).Y = 1 ‘OperationsFor i = 1 To Max’Set ScalingTriLength = TriLength * ScaleUPArmLength = TriLength * ScaleUP’Get Box PointsBox(0).X = 10 + Spacing * i * ScaleUP * 1.75Box(0).Y = 10Box(1).X = Box(0).X - TriLengthBox(1).Y = Box(0).YBox(2).X = Box(1).XBox(2).Y = Box(1).Y + TriLengthBox(3).X = Box(0).XBox(3).Y = Box(2).YBox(4).X = Box(0).X - TriLength / 2Box(4).Y = Box(1).Y + TriLength / 2’Draw the BoxDone = DrawLine(Box(0), Box(1))Done = DrawLine(Box(1), Box(2))Done = DrawLine(Box(2), Box(3))’Get the Midpoints’Then Get the perpendicular pointsPt1 = GetLineDivisorPoint(Box(0), Box(1), 2, 1)Pt2 = GetLineDivisorPoint(Box(1), Box(2), 2, 1)Pt3 = GetLineDivisorPoint(Box(2), Box(3), 2, 1)Pt4 = GetPerpendicularLinePoint(Pt1, Box(1), ArmLength)Pt5 = GetPerpendicularLinePoint(Pt2, Box(2), ArmLengthPt6 = GetPerpendicularLinePoint(Pt3, Box(3), ArmLength)’Draw the ArmsDone = DrawLine(Box(0), Pt4)Done = DrawLine(Box(1), Pt4)Done = DrawLine(Box(1), Pt5)Done = DrawLine(Box(2), Pt5)Done = DrawLine(Box(2), Pt6)Done = DrawLine(Box(3), Pt6)’Draw the Slots BottomSlots(0).X = Pt1.X - RotationSlots(0).Y = Pt1.Y - (ArmLength / Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots MiddleSlots(0).X = Pt2.X - (ArmLength / 5)Slots(0).Y = Pt2.Y + RotationSlots(1).X = Slots(0).XSlots(1).Y = Slots(0).Y + (TriLength * 0.25)Slots(2).Y = Slots(0).Y - (TriLength * 0.25)Slots(2).X = Slots(0).(3).X = Slots(0).X - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (TriLength * 0.2)Slots(4).X = Slots(0).X - (ArmLength / 24)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots Top Slots(0).X = Pt3.X + RotationSlots(0).Y = Pt3.Y + (ArmLength / 5)Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y + (ArmLength / 24)Slots(4).Y = Slots(0).Y + (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Score Lines BottomPtScore(0).X = Pt4.XPtScore(0).Y = Pt4.Y + (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(1), Box(0), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(0), Pt4, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(0), Box(1), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(1), Pt4, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt4)Done = DrawLine(PtScore(3), Pt4)Done = DrawLine(PtScore(4), Pt4)Done = DrawLine(Box(1), Box(4))Done = DrawLine(Box(2), Box(4))’Draw the Score Lines MiddlePtScore(0).X = Pt5.X + (ArmLength * 0.5)PtScore(0).Y = Pt5.YPtScore(1) = GetTranslatedLinePoint(Box(2), Box(1), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(1), Pt5, PtScore(0), PtScore(1))PtScore(2) = GetLi neIntersectionPoint(Box(2), Pt5, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt5)Done = DrawLine(PtScore(3), Pt5)Done = DrawLine(PtScore(4), Pt5)’Draw the Score Lines TopPtScore(0).X = Pt6.XPtScore(0).Y = Pt6.Y - (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(3), Box(2), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(2), Pt6, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(2), Box(3), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(3), Pt6, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt6)Done = DrawLine(PtScore(3), Pt6)Done = DrawLine(PtScore(4), Pt6)‘Get the Latch Pointsout Latch Segment and DepthLatchSegment = GetDistance(Box(3), Box(4)) / 4LatchDepth = GetDistance(Box(3), Box(4)) / 8’Latches for Box(3) to Box(4)Box(7) = GetLineDivisorPoint(Box(3), Box(4), 4, 1)Box(8) = GetLineDivisorPoint(Box(3), Box(4), 4, 2)Box(11) = GetLineDivisorPoint(Box(3), Box(4), 4, 3)Box(5) = GetPerpendicularLinePoint(Box(3), Box(4), LatchDepth)Box(6) = GetTranslatedLinePoint(Box(4), Box(1), Box(5))Box(6) = AdjustLineLength(Box(5), Box(6), LatchSegment * 1.33)Box(9).X = Box(8).X + LatchSegment * 0.588235294117647Box(9).Y = Box(8).Y - LatchSegment / 6Box(10) = GetTranslatedLinePoint(Box(5), Box(6), Box(9))Box(10) = AdjustLineLength(Box(9), Box(10), LatchSegment * 1.5)’Draw the Top LatchesDone = DrawLine(Box(3), Box(5))Done = DrawLine(Box(5), Box(6))Done = DrawLine(Box(6), Box(7))Done = DrawLine(Box(7), Box(8))Done = DrawLine(Box(8), Box(9))Done = DrawLine(Box(9), Box(10))Done = DrawLine(Box(10), Box(11))Done = DrawLine(Box(11), Box(4))’Latches for Box(4) to Box(0)Box(13) = GetLineDivisorPoint(Box(4), Box(0), 4, 1)Box(14) = GetLineDivisorPoint(Box(4), Box(0), 4, 2)Box(17) = GetLineDivisorPoint(Box(4), Box(0), 4, 3)Box(12) = GetPerpendicularLinePoint(Box(13), Box(0), LatchDepth)Box(12).X = Box(13).X + LatchSegment / 4Box(12).Y = Box(13).Y + LatchSegment / 6Box(12) = AdjustLineLength(Box(13), Box(12), LatchDepth)Box(15).X = Box(14).X + LatchSegment * 0.588235294117647Box(15).Y = Box(14).Y + LatchSegment / 6Box(16) = GetTranslatedLinePoint(Box(17), Box(0), Box(15))Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Box(15) = AdjustLineLength(Box(16), Box(15), LatchSegment * 2)Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Done = DrawLine(Box(4), Box(12))Done = DrawLine(Box(12), Box(13))Done = DrawLine(Box(13), Box(14))Done = DrawLine(Box(14), Box(15))Done = DrawLine(Box(15), Box(16))Done = DrawLine(Box(16), Box(17))Done = DrawLine(Box(17), Box(0))’Draw the Score LinesDone = DrawLine(Box(3), Box(7))Done = DrawLine(Box(8), Box(11))Done = DrawLine(Box(4), Box(13))Done = DrawLine(Box(14), Box(17))Next iEnd Sub SubProject_Multiplying_With_Scale_Shift_AND_SLOTS()’VariablesDim Box(17) As Point3dDim Slots(4) As Point3dDim PtScore(4) As Point3dDim Pt1 As Point3dDim Pt2 As Point3dDim Pt3 As Point3dDim Pt4 As Point3dDim Pt5 As Point3dDim Pt6 As Point3dDim ArmLength As DoubleDim TriLength As DoubleDim LatchSegment As DoubleDim LatchDepth As DoubleDim ScaleUP As DoubleDim i As IntegerDim Max As IntegerDim Rotation As Double ‘ParametersTriLength = ‘Two feet to begin withScaleUP = 1.045‘Percentage to increase per LoopRotation = (0.07 * TriLength’Rotation Decimal must fall between -0.07 < x < 0.07 Thicontrols the twisting of the spire, clockwise = +, counterclockwise = -’X-Axis Spacing of PiecesMax = ‘Number of Pieces’Call out first start pointBox(0).X = 10Box(0).Y = 1 ‘OperationsFor i = 1 To Max’Set ScalingTriLength = TriLength * ScaleUPArmLength = TriLength * ScaleUP’Get Box PointsBox(0).X = 10 + Spacing * i * ScaleUP * 1.75Box(0).Y = 10Box(1).X = Box(0).X - TriLengthBox(1).Y = Box(0).YBox(2).X = Box(1).XBox(2).Y = Box(1).Y + TriLengthBox(3).X = Box(0).XBox(3).Y = Box(2).YBox(4).X = Box(0).X - TriLength / 2Box(4).Y = Box(1).Y + TriLength / 2’Draw the BoxDone = DrawLine(Box(0), Box(1))Done = DrawLine(Box(1), Box(2))Done = DrawLine(Box(2), Box(3))’Get the Midpoints’Then Get the perpendicular pointsPt1 = GetLineDivisorPoint(Box(0), Box(1), 2, 1)Pt2 = GetLineDivisorPoint(Box(1), Box(2), 2, 1)Pt3 = GetLineDivisorPoint(Box(2), Box(3), 2, 1)Pt4 = GetPerpendicularLinePoint(Pt1, Box(1), ArmLength)Pt5 = GetPerpendicularLinePoint(Pt2, Box(2), ArmLengthPt6 = GetPerpendicularLinePoint(Pt3, Box(3), ArmLength)’Draw the ArmsDone = DrawLine(Box(0), Pt4)Done = DrawLine(Box(1), Pt4)Done = DrawLine(Box(1), Pt5)Done = DrawLine(Box(2), Pt5)Done = DrawLine(Box(2), Pt6)Done = DrawLine(Box(3), Pt6)’Draw the Slots BottomSlots(0).X = Pt1.X - RotationSlots(0).Y = Pt1.Y - (ArmLength / Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots MiddleSlots(0).X = Pt2.X - (ArmLength / 5)Slots(0).Y = Pt2.Y + RotationSlots(1).X = Slots(0).XSlots(1).Y = Slots(0).Y + (TriLength * 0.25)Slots(2).Y = Slots(0).Y - (TriLength * 0.25)Slots(2).X = Slots(0).(3).X = Slots(0).X - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (TriLength * 0.2)Slots(4).X = Slots(0).X - (ArmLength / 24)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots Top Slots(0).X = Pt3.X + RotationSlots(0).Y = Pt3.Y + (ArmLength / 5)Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y + (ArmLength / 24)Slots(4).Y = Slots(0).Y + (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Score Lines BottomPtScore(0).X = Pt4.XPtScore(0).Y = Pt4.Y + (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(1), Box(0), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(0), Pt4, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(0), Box(1), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(1), Pt4, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), (Pt3, Box(3), ArmLength)’Draw the (Pt3, Box(3), ArmLength)’Draw the (Pt3, Box(3), ArmLength)’Draw thev (Pt3, Box(3), ArmLength)’Draw the (Pt3, Box(3), ArmLength)’Draw the (Pt3, Box(3), ArmLength)’Draw the (Pt3, Box(3), ArmLength)’Draw the (Pt3, Box(3), ArmLength)’Draw the (Pt3, Box(3),

Joseph Buccini


Joseph Ware Buccini ResumĂŠ My Desires I would like to obtain a position with a tight knit firm that will allow me to grow as an architect, express my design ideas, and help to shape the world around me in an economical and ecologically sensitive way.

Professional Work Cad Drafter / Blueprint Analyst at Petersen Aluminum Corporation (2007-2010) - During my three years at PAC-Clad my main job was to interpret blueprints submitted by architects and contractors, pricing metal standing seam roofing along with any special conditions that needed to be taken into account. I was also put in charge of drafting and catologing all of the standard details and creation of new details to function as part of the total roofing system. Designer / Construction Management for an Installation at the Hi-Hat Lounge (2010-2011) - As a part of Studio Innov8, in the winter of 2010-2011, we were commissioned to design, build, and install a piece of art/architecture for the Hi-Hat Lounge on Brady street. The final design was an undulating wall system, claded in aluminum panels that was positioned atop the bar. Time from inception to installation was approximately 7 weeks. Designer / Construction of a French Drain and Rain Garden at the residence of Mike Utzinger (2011) - Keeping in touch with one of my professors from the University of Wisconsin - Milwaukee, I had the opportunity of assist in the design and construction of two 60 foot long french drains, that empty into a 120 spuare foot rain garden. Using surveying equiptment, and a lot of manual labor we designed and built the system to relieve flooding issues assossiated with the low lying lot and home. Operations Manager at Missing Links Golf Course (2011-Present) - Currently I am employed by Missing Links Golf Course in Mequon to help in the design decissions relating to the golf course’s appearance, play, and picturesque views. I am also opperations manager of the driving range which comes with the responsibilities of opening or closing, ordering new equiptment, and making sure all day to day tasks are completed in an organized and professional way. Aquaponics System Designer (2011-Present) - Myself along with some long time friends, have started a company called Futilize, which is involved in aquaculture and specializes in home scale aquaponics systems. We would like to spread knowledge of such systems to everyone and make a simple technology available to everyone. Our intresets were peaked when we had become interns for Sweet Water Foundation, working with these systems to increase productivity and exposure.


Education Graduated from the University of Wisconsin Milwaukee Bachelor of Science in Architectural Studies Certificate in Urban Planning with a focus on Urban Redevelopment GPA of 3.678 (Cum Laude) GRE: Quantitative - 720 Verbal - 490 Analytical Writing - 4.0 Recipient of Dean’s Honors (2009) Recipient of Illinois Scholar ($40,000 for GPA and ACT Scores) Honorable Mention in UWM Student Design Awards

walmarts

Research Assistant to Mo Zell (2011-Present) - This research consisted of gathering, compiling, and representing data in a publication and gallery exhibition having to do with the effect that big box retail (particularly Walmart) has on water usage and waste in our society. Study Abroad in Cape Verde - The trip to the archipelago of Cape Verde, located off the western coast of Africa (near Senegal), was one of the most important experiences relating to water conservation on the “home scale” and study of vernacular architecture of my life. I lived in a neighborhood named Inferno, which literally translates to hell, with a family that soon became part of me forever. While Inferno is a very impoverished neighborhood, if not the most impoverished one in the city, I learned of the strength they have through a sense of community unity and compassion. The Urban Ecology Center - During the fall of 2009 the Urban Ecology Center proposed, to the UWM School of Architecture and Urban Planning, a design competition for their new location on Milwaukee’s South Side near the Menomonee Valley (37th and Peirce). Working in teams of six, UWM’s thrre architecture students along with a group of three interior architecture students from MIAD were to design a net zero building as defined by the “Living Building Challenge”. Over the course of the semester we tackled issues of energy usage, rainwater harvesting and discharge, and the problems of heating and cooling the buildings through the climactic fluctuations through the seasons. Scripted Projects - One of the up and coming areas in architecture right now is the ability to use the computer’s speed to generate many thousands of different design options based on parameters set up by the designer. During the Spring of 2011, I was involved in a class that taught just that. There I learned Visual Basic, and how to manipulate the Microstation program so that I was able to set up a series of parameters to obtain a result with a degree of randomization and differentiation much faster than would ever be possible by hand.

Skills Adobe Acrobat Adobe InDesign Adobe Illustrator Adobe Photoshop Adobe Dreamweaver AutoCad 2000-2011 Ecotect Microsoft Excel 97-2010

Microsoft PowerPoint 97-2010 Microsoft Word 97-2010 Microstation Sketch-up 2006-2008 Transys V-Ray Rendering for Sketch-up 2007-2008 Visual Basic Scripting Code for Microstation and Rhinoceros 3D Studio Max

5 mi radius

MILWAUKEE INSTITUTE OF ART AND DESIGN JOSETTE KATCHA BEN MCGINLEY LIZ KUTSCHKE



Table Of Contents

The Scaled Wall

Prof. Kyle Talbott Arch 615 - Microcosm - Fall 2010 Design/Build Team : Sam Brannon - Colin Brown - Joseph Buccini - Justin Doll - Ashleigh Fischer Timothy Michael Jurasewicz - Dustin Koch - Robert McCaigue - Robert Zdanowski

Literature Museum

Prof. Hanno Weber - Mark DeBrauske - Darren Hoppa Arch 420 - Spring 2010

Translucence Prof. Kyle Talbott Arch 615 - Fall 2010

Torsion Tower Prof. Kyle Talbott Arch 390 - Spring 2011

A Living Building?! Prof. Mike Utzinger - Nj Unaka Arch 645 - Spring 2011

D e s i g n T e a m : Sam Brannon - Joseph Buccini - Ashleigh Fischer - Lee Eckert Steve Wollner - Josette Katcha - Ben Mcginley - Liz Kutschke


The Scaled Wall As a part of Studio Innov8, in the winter of 2010-2011, we were commissioned to design, build, and install a piece of art/architecture for the Hi-Hat Lounge on Brady street. The final design was an undulating wall system, clad in aluminum panels that was positioned atop their main bar. Using material researching techniques and parametric modeling, we came up with the shape and surface treatment for the panels and the wooden support system. The scaled wall was to be displayed first in an art gallery for three days as a part of the gallery’s themed exposition, art and architecture. Then was to be taken down and reassembled in its final position in the Hi-Hat Lounge. Time from inception to the final installation was approximately eight weeks.

the site: Hi Hat Lounge


the scale wall will replace the current display above the lower bar at the Hi Hat Lounge


Surface Texture Taxonomy a wide variety of hammers were used to create different ridges and valleys on the aluminum

+

SODIUM BISULFATE + COPPER

Applying heat and quenching annealing with a torch, in a bath of bisulfate followed by sodium quenching the and bathbisulfate caused metala incopper a sodium corrosion to bath happen within and copper caused an minutes interesting corrosion effect

Sandblasted patterns sandblasting reduced the extreme shiny quality of the aluminum

Aa metal patterns on on thethe aluminum metalroller rollerwas wasused usedtotoimprint imprint patterns surface

surface texture taxonomy


The Making of a Scale

1. laser cut

4. sand

the making of a scale

5. spray

3. wire brush

2. hammer

1

2

3

4

5


The Sheer Numbers

13 plywood ribs

208 aluminum panels

208 masonite back panels

229 ft. LED rope lights

416 aluminum c-brackets

832 acrylic brackets

+

13 plywood ribs 208 aluminum panels 208 masonite panels 832 acrylic brackets 416 aluminum c brackets 871 bolts 871 nuts 2574 washers

GRAND TOTAL = 5,993 pieces


Parametric Design Studio_Innov8_Scripting() ‘‘Variables Variables Dim RibA() As Point3d Dim RibB() As Point3d Dim RibC() As Point3d Dim ScalePts(5) As Point3d Dim PtTemp As Point3d Dim PtTemp_Up As Point3d Dim PtTemp_Down As Point3d Dim PtTemp_Left As Point3d Dim PtTemp_Right As Point3d Dim Done As Boolean Dim j As Long Dim k As Integer Dim ScalePoints As Integer Dim ScaleWidth As Double Dim ScaleHeight As Double Dim ScaleOffset_UpDown As Double Dim ScaleOffset_LeftRight As Double Dim ScaleOverlap_UpDown As Double Dim ScaleOverlap_LeftRight As Double

panel va riable

‘These are the points that define the two axes of a scale Dim PtLeft As Point3d Dim PtRight As Point3d Dim PtUp As Point3d Dim PtDown As Point3d

s

‘These are the points that define the pentagon’s points Dim BaseLength As Double Dim MidLength As Double Dim ScaleTempMid As Point3d Dim Midshift As Double ‘Parameters ScalePoints = 10 ‘This is the number of scale centerpoints to process along each rib (determined by the selected input lines) ScaleWidth = 15 / 12 ‘A standard width for a scale ScaleHeight = 9 / 12 ‘A standard height of a scale ScaleOffset_UpDown = 5 / 12 ‘A standard offset between adjacent scales in the up-down direction ScaleOffset_LeftRight = 1 / 12 ‘A standard offset between adjacent scales in the left-right direction ScaleOverlap_UpDown = 3 / 12 ‘A standard overlap in the up-down direction of the wall ScaleOverlap_LeftRight = 3 / 12 ‘A standard overlap in the left-right direction of the wall BaseLength = 2 / 12 ‘This is half of the total base length MidLength = 9 / 12 ‘This is half of the total height Midshift = 3 / 12 ‘This is how close Points 2 & 4 are from the Middle of the Pentagon

pane

l par am

‘INITIALIZE INITIALIZE j = 0 k = 0 SetMark ReDim RibA(ScalePoints - 1) As Point3d ‘ReDim allows the number of slots in a list to be set dynamicly, ReDim RibB(ScalePoints - 1) As Point3d ‘in response to the parameter value of ScalePoints ReDim RibC(ScalePoints - 1) As Point3d

eters

‘OPERATIONS ‘STEP 1: EXTRACT POINTS FROM SELECTED GEOMETRY ‘Get the top point of three rows of selected lines and store them in lists Do While j > -1 ‘Get a line from the selection set PtTemp = GetSelectedLine_Point(1, j) ‘Check to see if it is a good line If PtTemp.X = 0 And PtTemp.Y = 0 And PtTemp.Z = 0 Then ‘It is not a good point, so exit the loop j = -2 Else ‘It is a good point, so add it to the appropriate list Select Case j ‘Put the point in the RibA() list Case j = 0 To ScalePoints - 1

rib c alcu

RibA(k) = PtTemp ‘Put the point in the RibB() list Case j = ScalePoints To (ScalePoints * 2) - 1

lation

RibB(k) = PtTemp ‘Put the point in the RibC() list Case j = ScalePoints * 2 To (ScalePoints * 3) - 1 RibC(k) = PtTemp

‘Manage the rib list counter k (reset it to 0 whenever it reaches the max for a rib list) If k = ScalePoints - 1 Then k = 0 Else k = k + 1 End If ‘Increment position in selection set (to get next selected line) j = j + 1

tion

End If Loop

uc str

‘STEP 2: CALCULATE AND DRAW THE SCALES For k = 1 To ScalePoints - 2

on el c

‘THIS IS WHERE THE CONSTRUCTION OF EACH SCALE HAPPENS IN REFERENCE TO THE SCALE CENTERPOINT: RibB(k) ‘Draw the scale centerpoint Done = SetActive(8, 7, 0) Done = SetLevel(“Scale_Constructions”) Done = DrawPoint(RibB(k)) ‘Tilt the UP-DOWN axis points for scale overlap PtTemp_Up = RibB(k + 1) PtTemp_Up.Z = PtTemp_Up.Z + ScaleOffset_UpDown / 2

pan

PtTemp_Down = RibB(k - 1) PtTemp_Down.Z = PtTemp_Down.Z - ScaleOffset_UpDown / 2 ‘Tilt the LEFT-RIGHT axis points for scale overlap PtTemp_Left = RibA(k) PtTemp_Left.Z = PtTemp_Left.Z - ScaleOffset_LeftRight / 2 PtTemp_Right = RibC(k) PtTemp_Right.Z = PtTemp_Right.Z + ScaleOffset_LeftRight / 2 ‘Calculate the axis line of the scale (LEFT-RIGHT axis) PtLeft = GetTranslatedLinePoint(PtTemp_Right, PtTemp_Left, RibB(k)) PtLeft = AdjustLineLength(RibB(k), PtLeft, ScaleWidth / 2 + ScaleOverlap_LeftRight / 2) PtRight = GetTranslatedLinePoint(PtTemp_Left, PtTemp_Right, RibB(k)) PtRight = AdjustLineLength(RibB(k), PtRight, ScaleWidth / 2 + ScaleOverlap_LeftRight / 2) Done = SetActive(1, 1, 2) Done = DrawLine(PtLeft, PtRight) ‘Calculate the axis line of the scale (UP-DOWN axis) PtUp = GetTranslatedLinePoint(PtTemp_Down, PtTemp_Up, RibB(k)) PtUp = AdjustLineLength(RibB(k), PtUp, ScaleHeight / 2 + ScaleOverlap_UpDown / 2) PtDown = GetTranslatedLinePoint(PtTemp_Up, PtTemp_Down, RibB(k)) PtDown = AdjustLineLength(RibB(k), PtDown, ScaleHeight / 2 + ScaleOverlap_UpDown / 2) Done = DrawLine(PtUp, PtDown) ‘FROM HERE, DEFINE ALL SCALE PENTAGON POINTS IN RELATIONSHIP TO THESE ESTABLISHED POINTS: ‘CENTERPOINT: RibB(k) ‘AXIS POINTS: PtLeft, PtRight, PtUp and PtDown ScalePts(0) = PtLeft ‘Base Point at the Left Extreme ScalePts(3) = PtRight ‘Apex Point at the Right Extreme ScalePts(1) = GetTranslatedLinePoint(PtUp, PtDown, ScalePts(0)) ScalePts(1) = AdjustLineLength(ScalePts(0), ScalePts(1), BaseLength) ScalePts(5) = GetTranslatedLinePoint(ScalePts(1), ScalePts(0), ScalePts(0)) ScaleTempMid = ScalePts(0) ScaleTempMid = AdjustLineLength(RibB(k), ScalePts(3), Midshift) ScalePts(2) = GetTranslatedLinePoint(ScalePts(0), ScalePts(1), ScaleTempMid) ScalePts(2) = AdjustLineLength(ScaleTempMid, ScalePts(2), MidLength) ScalePts(4) = GetTranslatedLinePoint(ScalePts(2), ScaleTempMid, ScaleTempMid) Done = DrawShapeByPointList(ScalePts()) Next k End Sub

and c onstr u

ction

End Select

ment

place final




Literature Museum An infill site, one of the most difficult sites to design for was the spot where a library was to be placed. Using Rafael Moneo’s Museum of Roman Art as an inspiration, I set out to create an intimate space for reading, writing, and working by setting up a series of load bearing masonry walls that would serve thresholds for privacy and noise dampening. All of the spaces are linked by a main circulation zone that runs the length of the building from least private front areas such as the checkout and children’s areas, to the more private back areas like the adult quite reading commons. In order to get light into the space the north wall is pulled away from the building and an open garden courtyard is created along the length of the north wall with only glass separating the garden from the interior.


DOWNER AVENUE BRANCH LIBRARY DESIGN BY : JOSEPH BUCCINI STUDIO 382

FIRST FLOOR PLAN WITH CONTEXT 1” = 8’

AXONAMETRIC DRAWING OF THE DOWNER AVENUE INFILL SITE TO BE DEVELOPED 1” = 16’

SECOND FLOOR PLAN 1” = 8’

AXONAMETRIC DRAWING OF THE DOWNER AVENUE INFILL SITE TO BE DEVELOPED 1” = 16’

THIRD FLOOR PLAN 1” = 8’


Torsion Tower One of many parametrically designed projects during my time at UWM was a tower that was constructed from a flat pattern. Without glue or adhesives, we were to design and build a structure that could support itself, be comprised of no less than twenty individual pieces, and had to be cut using a laser cutter. Implications for large scale construction using this method will soon be used due to ease of manufacturing.



Translucence The latent property of a material is a property that is not normally seen or used. Bringing out properties like color range, translucence, and reflectivity might have been normal in glass, but in concrete? It seemed impossible in the beginning but turned out to be quite interesting in the end.

Thicker Mixture

Normal Mixture

Latent property 1: Color Range Thinner Mixture

|---------------Understanding the basic properties of Rockite------------|---------------------------------Inserting objects onto the surface-------------------------------|--------------- Water substituted with Elme


Latent property 2: Transparency

Latent property 3: Reflectivity

er’s Wood Glue-----------|--------Thickening agent added-----------|---------------Manipulated in hand-------------------|----------------------Wood Glue substituted with Orange Juice --------------------|


A Living Building!? URBAN ECOLOGY CENTER - MILWAUKEE SOUTH SIDE

During the fall of 2009 the Urban Ecology Center proposed, to the UWM School of Architecture and Urban Planning, a design competition for their new location on Milwaukee’s South Side near the Menomonee Valley (37th and Peirce). Working in teams of six, UWM’s three architecture students along with a group of three interior architecture students from MIAD were to design a net zero building as defined by the “Living Building Challenge”. Over the course of the semester we tackled issues of energy usage, rainwater harvesting and discharge, and the problems of heating and cooling through the climactic fluctuations through the seasons. We entered the structure on Pierce Street and took measurements and collected data about the orientation of the building. Using Ecotect, we mapped data on temperatures, precipitation, wind velocities, and solar radiation of the current structure.

2

SW AXON

ARCHITECTURAL DRAWINGS

SE AXON

1

1

2 23

URBAN ECOLOGY CENTER - MILWAUKEE SOUTH SIDE

1

2

23

A

A

1

URBAN ECOLOGY CENTER - MILWAUKEE SOUTH SIDE

2

A

29

9

22

A

20

15

21

22 20

21

29 8

20

3

29

10 11

2

4

30

16 5

A112 22

4

7

22 20

B

6 3

A112 13

12

20

Level 1 1/8" = 1'-0"

1 A112

Level 1 40' - 0"

Sublevel 1 30' - 9"

Sublevel 1 30' - 9"

West 1/16" = 1'-0"

2

North 1/16" = 1'-0"

A

1

2

Level 2 1/8" = 1'-0"

20

20

20

23

23

Level 2 53' - 2"

1 A112

3

Sublevel 1 1/8" = 1'-0"

Level 1 40' - 0"

Sublevel 1 30' - 9"

B

23

ARCHITECTURAL DRAWINGS

1

East 1/16" = 1'-0"

2 Level 3 66' - 4"

Level 1 40' - 0"

B 1

Level 2 53' - 2"

Level 1 40' - 0"

Level 2 53' - 2"

1

B

Level 3 66' - 4"

Level 2 53' - 2"

Level 3 66' - 4"

3

31

A112

1

Level 3 66' - 4"

2

20

A112

2

B

22

Sublevel 1 30' - 9" 3

South 1/16" = 1'-0"

ARCHITECTURAL DRAWINGS


14° F

MARCH

(June-August) is around 20 oC (in the upper 60s oF). D oC (32 oF) about 120 days and above 4 oC (40 oF) for Source: NOAA Weather Data Files

SEPTEMBER

DAILY DRYBULB TEMPERATURE

URBAN ECOLOGY CENTER - MILWAUKEE SOUTH SIDE

>43

>38

ABOVE BELOW <4

74° F

Site and Climate

65° F

<3

climate is typical of the continentalMILWAUKEE interior of North America AREA with a large annual temAREA SURROUNDING“The SITE Site and Climate

TREE AND FOLIAGE GROWTH

perature range and with frequent short period temperature changes. The range of extreme temperatures is from about 43 to -40 degrees Celsius (110 to -40 degrees Fahrenheit). Winter temperatures (December-February) average“The nearclimate -7 oC (20 oF) andofthe average is typical thesummer continental interior of N 32° F around 20 me oC (in peak the upper oF). Daily temperatures average below 0 perature range and withcoincides frequent short with period tempe precipitation chart, there is(June-August) a major isspringti in60srainfall, which the oC (32 oF) about 120 days and above 4 oC (40 oF) for about 210 daysabout of the43 year.” temperatures is from to -40 degrees Celsius The chart showing the percentage maturity of leaves of two common local trees and a 14° F growth. Precipitation may also be usefall for rainwater collecti on , similar to the method Source: NOAA Weather Data Files ter temperatures (December-February) average near SOLAR RADIATION- SOUTH SWIN SOLAR RADIATION- Park NORTHPlace Urban SOLARand RADIATIONEAST HEATING: JANUARY SOLAR RADIATIONWESTIt may also be helpful in (June-August) is around 20 oC (inroof the upper 60s oF). D shrub. The shrub appears to mature more quickly also last longer. The shrub’s foliage Ecology Center. a potenti al green system. oC (32 oF) about 120 days and above 4 >33oC (40 oF) for trajectory is interesting for providing cooling at low elevations outside the house. The lag aerial photo and chart compare the percentage of greenspace around the site, which is a Source: NOAA Weather Data Files

URBAN E

MARCH SEPTEMBER in tree foliage as compared to temperature is useful for providing natural shading devices, mately 30%, to the overall greenspace in Milwaukee which is 50%. VS.ons BELOW GROUND TEMPERATURE while the natiABOVE ve treesGROUND offer suggesti that may be especially appropriate for the site. The chart also shows the transmission of solar radiation through the foliage. As shown by the The wind roses to the left indicate strong and frequent winds from the northeast in winter. This seasons, this can easily be compensated with the use of natural shading methods such as trees may be related toThethe Alberta Clipper. Summer winds are also strong from the northeast, coming solar radiation charts show the four cardinal directions. As shown, solar radiation is and shrubs, whose foliage also varies with the season. As the images below indicate, there is a off of Lake Michigan. These useful fora natural venti lationoncooling hotdiffsummer strongest on thewinds southerncan side,be which provides denite need for shading that side,duringgreat erence between the day’s duration in summer versus the winter.Site Thisand has implicati Climateons along with an opti on forstronger a solar heatiwestern ng system. While east and west sidesthat vary with the on for natural months. The swing months show and the southern winds transiti fromdaylight win- use and provision of energy from the sun. JULYwith a large annual tem- SWIN “The climate is typical of the continental interiorCOOLING: of North America ter to summer months. perature range and with frequent short period temperature changes. The range of extreme The temperature chart (top right) shows the average annual dry bulb temperature variations. temperatures is from about 43 to -40 degrees Celsius (110 to -40 degrees Fahrenheit). WinHeating months, which are shown in red, point out that Milwaukee is mostly a heating season cliter temperatures (December-February) average SWING: near -7 oC MAY (20 oF) and the summer average HEATING: SOLAR RADIATIONSOUTHJANUARY SOLAR RADIA RADIATIONEAST (June-August) is around 20 oCSOLAR (in the upper 60s oF). Daily temperatures average below 0 mate. The much less prominent cooling months, shown in blue, have a strong probability of being oC (32 oF) about 120 days and above 4 oC (40 oF) for about 210 days of the year.” The w reduced or even eliminated by natural ventilation cooling methods. The bottom graph illustrates a Source: NOAA Weather Data-Files URBAN ECOLOGY CENTER MILWAUKEE SOUTH SIDE may b SWIN HEATING: JANUARY comparison of above ground temperature to below ground temperature at 13 feet underground. off of mont This may be useful in the possibility of a geothermal heating system >38

>40

<3 >43

>38 <4

<3

<3

<4

>33

>40

>33<4

<3

ter to The te >38 >43 seasons, <3this can Heati easily mate. The solar radiati on charts show the four cardinal directi ons. As shown, solar radiati on is and shrubs, whose foli Urban Forest Effects and Values. "i-Tree Ecosystems Analysis". Urban Forest Effects Model. 10 August 2 reduc strongest on the southern side, which provides a denite <3need for shading on that side, great difference betwe <http://itreetools.org/pdfs/Milwaukee_Ecosystem%20Analysis.pdf>. comp <4 along with an option for a solar heating system. While the east and west sides vary with the for natural daylight usem This

SITE AND CLIMATE

PRECIPITATION

URBAN ECOLOGY CENTER - MILWAUKEE SOUTH SIDE SOLAR RADIATION- SOUTH

SUMMER SOLSTICE 9.00 AM

SUMMER SOLSTICE 3.00 PM

SOLAR RADIATION- EAST

WINTER SOLSTICE 9.00 AM HEATING COOLING

COOLING: JULY

SOLAR RADIATION- NORTH

WINTER SOLSTICE 3.00 PM

95° F

ual temxtreme t). Winaverage ow 0

HEATING: JANUARY 74° F

SITE AND CLIMATE

SWING: SEPTEMBER COOLING: SOLAR RADIATIONWESTJULY

SWIN

URBANSWING: ECOLOGY CENTER - MILWA MAY >33

>40

65° F

The solar radiation charts show the four cardinal directions. As shown, solar radiation is strongest on the southern side, which provides a denite need for shading 32° F on that side, along with an option for a solar heating system. While the east and west sides vary with the

seasons, this can easily be compensated with the use of natural shading methods such as trees and shrubs, whose foliage also varies with the season. As the images below indicate, there is a great difference between the day’s duration in summer versus the winter. This has implications for natural daylight use and provision of energy from the sun. <3

14° F

MARCH

DAILY DRYBULB TEMPERATURE >43

SITE AND C

SEPTEMBER

SOLAR RADIATION- SOUTH

COOLING: SOLAR RADIATIONEAST JULY

SUMMER SOLSTICE 9.00 AM

SWING: SEPTEMBER SOLAR RADIATIONNORTH

SUMMER SOLSTICE 3.00 PM

<4

The w may b off of L month ter to The te Heatin mate. reduce compa This m

SOLAR RAD

WINTER SOL


A Living Building!? The data that we collected during the summer months was then scrutinized and used as inputs to find the most suitable ways to approach the upcoming renovation. Passive systems were chosen over high-tech ones because they have less chance to malfunction and less maintenance for the occupants. Positioned next to a river and a prominent bicycle trail, we turned the views to the valley and trail so that people would be urged to go outside and interact with nature.

URBAN ECOLOGY CENTER - MILWAUKEE SOUTH URBAN ECOLOGY CENTER - MILWAUKEE SOUTH SIDE SIDE NIGHT PURGE VENTILATION NIGHT PURGE VENTILATION THERMAL MASS EFFECTS THERMAL MASS EFFECTS

100%

100%

100%

32° F

32° F

COOLING: SUMMER PASSIVEPASSIVE COOLING: SUMMER

AS IS: SUMMER AS IS: SUMMER 32° F

32° F

PASSIVE SOLAR HEATING PASSIVE SOLAR HEATING THERMAL MASS EFFECTS THERMAL MASS EFFECTS

100%

100%

32° F

AS IS: WINTER AS IS: WINTER 32° F

100%

100%

32° F

HEATING: PASSIVEPASSIVE HEATING: WINTERWINTER 32° F

NIGHT PURGE VENTILATION NIGHT PURGE VENTILATION THERMAL MASS EFFECTS THERMAL MASS EFFECTS PASSIVE SOLAR HEATING PASSIVE SOLAR HEATING THERMAL MASS/NATURAL THERMAL MASS/NATURAL VENTILATION VENTILATION

gay’s Design withshows Climate, the comfort gn with Climate, theshows comfort n. As shown, human comfort is dependant wn, human comfort is dependant ored been to show havebars beenhave added to added show the aver- the averevels in Milwaukee. With the cooling Milwaukee. With the cooling months months phasizes the ease of introducing passive coolhe ease of introducing passive coolright correspond with the data on espond with the data on the com- the commonths. three the far right The threeThe graphs ongraphs the faron right .methods.

eutral Design Project".Insti American tute of Archin Project". American tute ofInsti Archierloo.ca/faculty_projects/terri/carbon-aia/index. culty_projects/terri/carbon-aia/index.

100%

100%

32° F

AS IS: SWING AS IS: SWING 32° F

100%

100%

32° F

100%

SYSTEMS: PASSIVEPASSIVE SYSTEMS: SWING SWING SITE AND CLIMATE SITE AND CLIMATE 32° F


CONCEPT DIAGRAM

1. New Links to Jobs and Recreation New links include: Opened Fall 2010

DIRECTOR

OFFICES

• Valley Passage

CONFERENCE

COPY

RECEPTION DESK

ELEV.

• 4 more miles of the Hank Hank Aaron State Trail, Trail, which will then extend from Lake Michigan to Waukesha Waukesha County TOILET

27th Street

STAIR

UP

TOILET

RECEPTION/GATHERING

UP

VESTIBULE

GREENHOUSE/GATHERING

SHOWER

CLASSROOM MECH.

35 Street th

Opening Fall 2012

ELEV.

STAIR

• Mitchell Park Domes Bike / Ped Bridge ANIMAL ROOM

COMPOSTING

Miller Park Parking Lots SLIDE

ADVENTURE STORAGE

STORAGE

• 33rd Court Bike / Ped Bridge


A Living Building!?

s y n t h e s i

Proposed Total

Proposed Total

4376 SF

3735 SF

+Needed Circulation:

+Needed Circulation:

Using a combination ofSFsolar panels, 8.5x19 485 Stairs (1) 8.5x19 483 SF 9x11 300 SF solar hot water heaters, composting Elevator 9x11 300 SF Extras: toilets, a vent stack; waste, water, TOTALand INTERIOR Slide 6x11 67 SF ventilation, and =5161 electricity all SF were Slide Landing 7x10 91 SF considered in our design. Our renovation Classroom Storage 3x14 44 SF would begin by removing all ofMILWAUKEE the Vestibule 7x7 48 SF INSTITUTE OF Greenhouse 34x12 462 SF framing down to the basement and TOTAL INTERIOR salvaging the boards. These boards, which were in excellent condition, would =5230 SF be transformed into box beams and Exterior Program: G TOILET DIAGRAM Bike Storage 10x13 130 SF reused in the construction of our new framing system. By optimizing the layout of structural members we only needed to bring in five new pieces. Stairs (1) Elevator

ART AND DESIGN JOSETTE KATCHA SHOWER BEN MCGINLEY LIZ KUTSCHKECLASSROOM

UNIVERSITY OF WISCONSIN-MILWAUKEE STEVE WOLLNER JOE BUCCINI SAM BRANNON

MECH.

PRODUCED BY AN AUTODESK EDUCATIONAL PRODUCT

MARGAID NRETSIC COMPOSTING TOILET DIAGRAM

PRODUCED BY AN AUTODESK EDUCATIONAL PRODUCT

STAIR

ANIMAL ROOM

VENT STACK DIAGRAM

EXPOSED GLAZING RATIOS

EXTERIOR SQUARE FOOTAGE ANALYSIS

LAZING

ELEV.

COMPOSTING WALL

BLE GLAZING

SECOND FLOOR

EXISTING: 1619

EXISTING: 744

WEST: 476 EAST: 208

WEST: 594 EAST: 208

WEST: 303 EAST: 292

TOTAL:2389

TOTAL:2421

TOTAL:1339

NORTH ELEVATION

WEST ELEVATION

91%

0%

9%

80%

20%

SOUTH ELEVATION

0%

50%

EXPOSED GLAZING RATIOS

OPERABLE GLAZING

STRUCTURAL FRAMING TAKE‐OFFS

42%

8%

AZING RATIOS

TYPE

NEEDED

Dimension lumber: 1/2" plywood 2' DEPTH Dimension lumber: 1/2" plywood 2' DEPTH Dimension lumber: 1/2" plywood 2' DEPTH Dimension lumber: 1/2" plywood 2' DEPTH SLIDE Dimension lumber: 1/2" plywood 2' DEPTH Dimension lumber: 1/2" plywood 2' DEPTH

2 6 4 6 2 2

TYPE

NEEDED

APPROX.CUT LENGTH

TOTAL MATERIAL SQFT NEEDED

Dimension lumber: 2x4 in Box Beam Dimension lumber: 2x4 in Box Beam Dimension lumber: 2x4 in Box Beam Dimension lumber: 2x4 in Box Beam Dimension lumber: 2x4 in Box Beam Dimension lumber: 2x4 in Box Beam

8 4 12 12 4 4

34'‐10" 20'‐6" 27'‐0" 35'‐9" 36'‐0" 36'‐9"

278 SF 82 SF 324 SF 430 SF 144 SF 144 SF TOTAL 1124 LINEAR FT

MECH.

APPROX.CUT LENGTH

TOTAL MATERIAL SQFT NEEDED

20'‐6"

41 SF 162 SF 139 SF 215 SF 72 SF 74 SF TOTAL 557 SF

27'‐0" ADVENTURE 34'‐10" STORAGE 35'‐9" 36'‐0" 36'‐9"

PRODUCED BY AN AUTODESK EDUCATIONAL PRODUCT

FIRST FLOOR

EXISTING: 1619+86 = 1705

PRODUCED BY AN AUTODESK EDUCATIONAL PRODUCT

BASEMENT

NON-OPERABLEEXISTING SUPPLIES GLAZING

STORAGE

Off‐site supplies

APPROX. 18 (4X8) SHEETS 1/2"PLYWOOD NEEDED

EXISTING SUPPLIES

Off‐site supplies

Note: Could use remaining (2x6) below 8 (2X6) of 25'‐9" REUSED AS (2X4) and 8 (2X6)of 25'‐9" cut to (2X4) at 9‐1" (16'‐8" remain of ea. Cut) 4 (2X6) of 25'‐9" REUSED AS (2X4) and 4 (2X6) of 16'‐8" from above 12 (2X6) of 25'‐9" cut to 15'‐0"(2X4)‐10'‐9" remain of ea. Cut) and 12 (2X6) OF 12'‐7" REUSED AS (2X4) 12 (2X6) of 25'‐9" and 12 (2X6) of 10'‐0" from above ( ) ( ) 4 (2X6) of 25'‐9" REUSED AS (2X4) and 4 (2X6)of 25'‐9" cut to (2X4) at 12'‐0" (13'‐9" remain of ea. Cut) 4 (2X6) of 25'‐9" REUSED AS (2X4) and 4 (2X6)of remaining 13'‐9" cut above REUSE ALL 39 25'‐9" (2X6) AND 13 12'‐7" (2X6) FROM BELOW NEED 5 MORE 25'‐9" (2X6)

1164 LINEAR FT

TYPE

NEEDED

APPROX CUT LENGTH APPROX.CUT LENGTH

TOTAL LINEAR FT NEEDED TOTAL LINEAR FT NEEDED

Dimension lumber: 2x6 STUDS Dimension lumber: 2x6 STUDS

163 13

11'‐2" 13'‐2"

1709 LINEAR FT 172 LINEAR FT TOTAL 1881 LINEAR FT

EXISTING SUPPLIES EXISTING SUPPLIES Note: existing has approx. 134 (2x6) at 25'‐9" Cut 82 of 25'‐9" (2x6) into 163 11'‐2" Cut 13 of 25'‐9" (12'‐7" remain of ea. cut) TOTAL 3853 LINEAR FT

EAST ELEVATION

81%

12%

7%

Off site supplies Off‐site supplies NORTH ELEVATION

WEST ELEVATION

91%

0%

9%

39 25'‐9" (2X6) AND 13 12'‐7" (2X6) SURPLUS

TYPE

NEEDED

APPROX.CUT LENGTH

TOTAL LINEAR FT NEEDED

EXISTING SUPPLIES

Off‐site supplies

Dimension lumber: 2x8 Dimension lumber: 2x8

2 7

25'‐2" 32'

50 LINEAR FT 182 LINEAR FT TOTAL 267 LINEAR FT

2 (2x8) at 25'‐2" OR 50 LINEAR FT 4 (2x8) at 32'‐0" OR 120 LINEAR FT TOTAL 170 LINEAR FT

3 (2x8) AT 32'‐0"

EXISTING SUPPLIES

Off‐site supplies Off site supplies

MARGAID TELIOT GNITSOPMOC

TCUDORP LANOITACUDE KSEDOTUA NA YB DECUDORP

EXPOSED GLAZING RATIOS

80%

TYPE NEEDED

PRODUCED BY AN AUTODESK EDUCATIONAL PRODUCT

EXTERIOR GRAND TOTAL : 6149

MARGAID KCATS TNEV

BUILDING DATA

BASEMENT PLAN 1/8” = 1’

SOITAR GNIZALG DESOPXE

ECUDORP

EPYT

2

HTPED '2 doowylp "2/1 :rebmul noisnemiD

11'‐6" 10'‐9" 9'‐10" 10'‐9" 25'0" LLAW 25'8"

TOTAL LINEAR FT NEEDED

334 LINEAR FT 305 LINEAR FT 138 LINEAR FT 119 LINEAR FT 1000 LINEAR FT 1000 LINEAR FT 360 LINEAR FT TOTAL 2256 LINEAR FT

Note: existing has 92 (2x12)'s at 25'‐8" 29 of 25'8" (14'‐2" remain of ea. cut ) 29 at 14'‐2" from previous cut ,3'‐5" left of ea.) 14 of 25'‐8" (14'‐10" remain of ea. cut) 11 at 10'‐9" from previous, 4'‐1" remain of ea. Cut 40 at 25' 8" (8" waste ) 40 at 25'‐8" (8" waste 14 at 25'‐8" 97 25'‐8" OR APPROX 2490 LINEAR FT INCLUDES WASTE

5 (2x12)AT 25'‐8" OR 5 10'(2X12) AND 5 12'(2X12) NEEDED

TYPE

NEEDED

APPROX.CUT LENGTH

22 10'‐1" 14 10'‐8" GNIZALG4ELBAREP25'‐0" O-NON 42 25'‐5"

TOTAL LINEAR FT NEEDED

EXISTING SUPPLIES

Off‐site supplies

222 LINEAR FT 150 LINEAR FT 100 LINEAR FT 1068 LINEAR FT TOTAL 1540 LINEAR FT

5 15'‐5" OR 77 LINEAR FT LINEAR FT LINEAR FT 41 25'‐10" OR 1059 LINEAR FT TOTAL 1136 LINEAR FT

EXISTING SUPPLIES

TYPE

NEEDED

APPROX.CUT LENGTH

TOTAL LINEAR FT NEEDED

TIMBER COLLUMN 8X8 TIMBER COLLUMN 8X8 TIMBER COLLUMN 8X9

13 3

12 0 12'‐0" 10'‐0"

156 LINEAR FT 156 LINEAR FT 30 LINEAR FT TOTAL

TCUDO

SFFO‐EKAT GNIMARF LARUTCURTS

APPROX.CUT LENGTH

GNIZALG ELBAREPO

Dimension lumber: 3x8 Dimension lumber: 3x8 Dimension lumber: 3x8 Dimension lumber: 3x8

DEDEEN

29 29 14 11 40 14

PRODUCED BY AN AUTODESK EDUCATIONAL PRODUCT

ADDITIONS: 2081 EXISTING: 4068

Dimension lumber: 2x12 Dimension lumber: 2x12 Dimension lumber: 2x12 Dimension lumber: 2x12 Dimension lumber: 2x12 Dimension lumber: 2x12 Dimension lumber: 2x12

14 AT 15'‐5" AND 5 AT 25'‐5" OR APPROX 34 12'(3X8) NEEDED

Off‐site supplies

20%

0%


s y n t h e s MILWAUKEE INSTITUTE OF ART AND DESIGN JOSETTE KATCHA BEN MCGINLEY LIZ KUTSCHKE

VIEW FROM NORTH EAST

BASEMENT ANIMAL ROOM AND CLASSROOM

FIRST FLOOR GREEN HOUSE AND RECEPTION

UNIVERSITY OF WI



Thank you.


SubProject_Multiplying_With_Scale_Shift_AND_SLOTS()’VariablesDim Box(17) As Point3dDim Slots(4) As Point3dDim PtScore(4) As Point3dDim Pt1 As Point3dDim Pt2 As Point3dDim Pt3 As Point3dDim Pt4 As Point3dDim Pt5 As Point3dDim Pt6 As Point3dDim ArmLength As DoubleDim TriLength As DoubleDim LatchSegment As DoubleDim LatchDepth As DoubleDim ScaleUP As DoubleDim i As IntegerDim Max As IntegerDim Rotation As Double ‘ParametersTriLength = ‘Two feet to begin withScaleUP = 1.045‘Percentage to increase per LoopRotation = (0.07 * TriLength’Rotation Decimal must fall between -0.07 < x < 0.07 Thicontrols the twisting of the spire, clockwise = +, counterclockwise = -’X-Axis Spacing of PiecesMax = ‘Number of Pieces’Call out first start pointBox(0).X = 10Box(0).Y = 1 ‘OperationsFor i = 1 To Max’Set ScalingTriLength = TriLength * ScaleUPArmLength = TriLength * ScaleUP’Get Box PointsBox(0).X = 10 + Spacing * i * ScaleUP * 1.75Box(0).Y = 10Box(1).X = Box(0).X - TriLengthBox(1).Y = Box(0).YBox(2).X = Box(1).XBox(2).Y = Box(1).Y + TriLengthBox(3).X = Box(0).XBox(3).Y = Box(2).YBox(4).X = Box(0).X - TriLength / 2Box(4).Y = Box(1).Y + TriLength / 2’Draw the BoxDone = DrawLine(Box(0), Box(1))Done = DrawLine(Box(1), Box(2))Done = DrawLine(Box(2), Box(3))’Get the Midpoints’Then Get the perpendicular pointsPt1 = GetLineDivisorPoint(Box(0), Box(1), 2, 1)Pt2 = GetLineDivisorPoint(Box(1), Box(2), 2, 1)Pt3 = GetLineDivisorPoint(Box(2), Box(3), 2, 1)Pt4 = GetPerpendicularLinePoint(Pt1, Box(1), ArmLength)Pt5 = GetPerpendicularLinePoint(Pt2, Box(2), ArmLengthPt6 = GetPerpendicularLinePoint(Pt3, Box(3), ArmLength)’Draw the ArmsDone = DrawLine(Box(0), Pt4)Done = DrawLine(Box(1), Pt4)Done = DrawLine(Box(1), Pt5)Done = DrawLine(Box(2), Pt5)Done = DrawLine(Box(2), Pt6)Done = DrawLine(Box(3), Pt6)’Draw the Slots BottomSlots(0).X = Pt1.X - RotationSlots(0).Y = Pt1.Y - (ArmLength / Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0). YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots MiddleSlots(0).X = Pt2.X - (ArmLength / 5)Slots(0).Y = Pt2.Y + RotationSlots(1).X = Slots(0).XSlots(1).Y = Slots(0).Y + (TriLength * 0.25)Slots(2).Y = Slots(0).Y - (TriLength * 0.25)Slots(2).X = Slots(0).(3).X = Slots(0).X - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (TriLength * 0.2)Slots(4).X = Slots(0).X - (ArmLength / 24)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots Top Slots(0).X = Pt3.X + RotationSlots(0).Y = Pt3.Y + (ArmLength / 5)Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y + (ArmLength / 24)Slots(4).Y = Slots(0).Y + (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Score Lines BottomPtScore(0).X = Pt4.XPtScore(0).Y = Pt4.Y + (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(1), Box(0), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(0), Pt4, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(0), Box(1), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(1), Pt4, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt4)Done = DrawLine(PtScore(3), Pt4)Done = DrawLine(PtScore(4), Pt4)Done = DrawLine(Box(1), Box(4))Done = DrawLine(Box(2), Box(4))’Draw the Score Lines MiddlePtScore(0).X = Pt5.X + (ArmLength * 0.5)PtScore(0).Y = Pt5.YPtScore(1) = GetTranslatedLinePoint(Box(2), Box(1), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(1), Pt5, PtScore(0), PtScore(1))PtScore(2) = GetLineIntersectionPoint(Box(2), Pt5, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt5)Done = DrawLine(PtScore(3), Pt5)Done = DrawLine(PtScore(4), Pt5)’Draw the Score Lines TopPtScore(0).X = Pt6.XPtScore(0).Y = Pt6.Y - (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(3), Box(2), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(2), Pt6, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(2), Box(3), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(3), Pt6, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt6)Done = DrawLine(PtScore(3), Pt6)Done = DrawLine(PtScore(4), Pt6)‘Get the Latch Pointsout Latch Segment and DepthLatchSegment = GetDistance(Box(3), Box(4)) / 4LatchDepth = GetDistance(Box(3), Box(4)) / 8’Latches for Box(3) to Box(4)Box(7) = GetLineDivisorPoint(Box(3), Box(4), 4, 1)Box(8) = GetLineDivisorPoint(Box(3), Box(4), 4, 2)Box(11) = GetLineDivisorPoint(Box(3), Box(4), 4, 3)Box(5) = GetPerpendicularLinePoint(Box(3), Box(4), LatchDepth)Box(6) = GetTranslatedLinePoint(Box(4), Box(1), Box(5))Box(6) = AdjustLineLength(Box(5), Box(6), LatchSegment * 1.33)Box(9).X = Box(8).X + LatchSegment * 0.588235294117647Box(9).Y = Box(8).Y - LatchSegment / 6Box(10) = GetTranslatedLinePoint(Box(5), Box(6), Box(9))Box(10) = AdjustLineLength(Box(9), Box(10), LatchSegment * 1.5)’Draw the Top LatchesDone = DrawLine(Box(3), Box(5))Done = DrawLine(Box(5), Box(6))Done = DrawLine(Box(6), Box(7))Done = DrawLine(Box(7), Box(8))Done = DrawLine(Box(8), Box(9))Done = DrawLine(Box(9), Box(10))Done = DrawLine(Box(10), Box(11))Done = DrawLine(Box(11), Box(4))’Latches for Box(4) to Box(0)Box(13) = GetLineDivisorPoint(Box(4), Box(0), 4, 1)Box(14) = GetLineDivisorPoint(Box(4), Box(0), 4, 2)Box(17) = GetLineDivisorPoint(Box(4), Box(0), 4, 3)Box(12) = GetPerpendicularLinePoint(Box(13), Box(0), LatchDepth)Box(12).X = Box(13).X + LatchSegment / 4Box(12).Y = Box(13).Y + LatchSegment / 6Box(12) = AdjustLineLength(Box(13), Box(12), LatchDepth)Box(15).X = Box(14).X + LatchSegment * 0.588235294117647Box(15).Y = Box(14).Y + LatchSegment / 6Box(16) = GetTranslatedLinePoint(Box(17), Box(0), Box(15))Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Box(15) = AdjustLineLength(Box(16), Box(15), LatchSegment * 2)Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Done = DrawLine(Box(4), Box(12))Done = DrawLine(Box(12), Box(13))Done = DrawLine(Box(13), Box(14))Done = DrawLine(Box(14), Box(15))Done = DrawLine(Box(15), Box(16))Done = DrawLine(Box(16), Box(17))Done = DrawLine(Box(17), Box(0))’Draw the Score LinesDone = DrawLine(Box(3), Box(7))Done = DrawLine(Box(8), Box(11))Done = DrawLine(Box(4), Box(13))Done = DrawLine(Box(14), Box(17))Next iEnd SuSubProject_Multiplying_With_Scale_Shift_AND_SLOTS()’VariablesDim Box(17) As Point3dDim Slots(4) As Point3dDim PtScore(4) As Point3dDim Pt1 As Point3dDim Pt2 As Point3dDim Pt3 As Point3dDim Pt4 As Point3dDim Pt5 As Point3dDim Pt6 As Point3dDim ArmLength As DoubleDim TriLength As DoubleDim LatchSegment As DoubleDim LatchDepth As DoubleDim ScaleUP As DoubleDim i As IntegerDim Max As IntegerDim Rotation As Double ‘ParametersTriLength = ‘Two feet to begin withScaleUP = 1.045‘Percentage to increase per LoopRotation = (0.07 * TriLength’Rotation Decimal must fall between -0.07 < x < 0.07 Thicontrols the twisting of the spire, clockwise = +, counterclockwise = -’X-Axis Spacing of PiecesMax = ‘Number of Pieces’Call out first start pointBox(0).X = 10Box(0).Y = 1 ‘OperationsFor i = 1 To Max’Set ScalingTriLength = TriLength * ScaleUPArmLength = TriLength * ScaleUP’Get Box PointsBox(0).X = 10 + Spacing * i * ScaleUP * 1.75Box(0).Y = 10Box(1).X = Box(0).X - TriLengthBox(1).Y = Box(0).YBox(2).X = Box(1).XBox(2).Y = Box(1).Y + TriLengthBox(3).X = Box(0).XBox(3).Y = Box(2).YBox(4).X = Box(0).X - TriLength / 2Box(4).Y = Box(1).Y + TriLength / 2’Draw the BoxDone = DrawLine(Box(0), Box(1))Done = DrawLine(Box(1), Box(2))Done = DrawLine(Box(2), Box(3))’Get the Midpoints’Then Get the perpendicular pointsPt1 = GetLineDivisorPoint(Box(0), Box(1), 2, 1)Pt2 = GetLineDivisorPoint(Box(1), Box(2), 2, 1)Pt3 = GetLineDivisorPoint(Box(2), Box(3), 2, 1)Pt4 = GetPerpendicularLinePoint(Pt1, Box(1), ArmLength)Pt5 = GetPerpendicularLinePoint(Pt2, Box(2), ArmLengthPt6 = GetPerpendicularLinePoint(Pt3, Box(3), ArmLength)’Draw the ArmsDone = DrawLine(Box(0), Pt4)Done = DrawLine(Box(1), Pt4)Done = DrawLine(Box(1), Pt5)Done = DrawLine(Box(2), Pt5)Done = DrawLine(Box(2), Pt6)Done = DrawLine(Box(3), Pt6)’Draw the Slots BottomSlots(0).X = Pt1.X - RotationSlots(0).Y = Pt1.Y - (ArmLength / Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots MiddleSlots(0).X = Pt2.X - (ArmLength / 5)Slots(0).Y = Pt2.Y + RotationSlots(1).X = Slots(0).XSlots(1).Y = Slots(0).Y + (TriLength * 0.25)Slots(2).Y = Slots(0).Y - (TriLength * 0.25)Slots(2).X = Slots(0).(3).X = Slots(0).X - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (TriLength * 0.2)Slots(4).X = Slots(0).X - (ArmLength / 24)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots Top Slots(0).X = Pt3.X + RotationSlots(0).Y = Pt3.Y + (ArmLength / 5)Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y + (ArmLength / 24)Slots(4).Y = Slots(0).Y + (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Score Lines BottomPtScore(0).X = Pt4.XPtScore(0).Y = Pt4.Y + (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(1), Box(0), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(0), Pt4, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(0), Box(1), PtScore(0))PtScore(2) = GetLineIntersectionP oint(Box(1), Pt4, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt4)Done = DrawLine(PtScore(3), Pt4)Done = DrawLine(PtScore(4), Pt4)Done = DrawLine(Box(1), Box(4)) Done = DrawLine(Box(2), Box(4))’Draw the Score Lines MiddlePtScore(0).X = Pt5.X + (ArmLength * 0.5)PtScore(0).Y = Pt5.YPtScore(1) = GetTranslatedLinePoint(Box(2), Box(1), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(1), Pt5, PtScore(0), PtScore(1))PtScore(2) = GetLineIntersectionPoint(Box(2), Pt5, PtScore(0), PtScore(2)) PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt5)Done = DrawLine(PtScore(3), Pt5)Done = DrawLine(PtScore(4), Pt5)’Draw the Score Lines TopPtScore(0).X = Pt6.XPtScore(0).Y = Pt6.Y (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(3), Box(2), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(2), Pt6, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(2), Box(3), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(3), Pt6, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt6)Done = DrawLine(PtScore(3), Pt6)Done = DrawLine(PtScore(4), Pt6)‘Get the Latch Pointsout Latch Segment and DepthLatchSegment = GetDistance(Box(3), Box(4)) / 4LatchDepth = GetDistance(Box(3), Box(4)) / 8’Latches for Box(3) to Box(4)Box(7) = GetLineDivisorPoint(Box(3), Box(4), 4, 1)Box(8) = GetLineDivisorPoint(Box(3), Box(4), 4, 2)Box(11) = GetLineDivisorPoint(Box(3), Box(4), 4, 3)Box(5) = GetPerpendicularLinePoint(Box(3), Box(4), LatchDepth)Box(6) = GetTranslatedLinePoint(Box(4), Box(1), Box(5))Box(6) = AdjustLineLength(Box(5), Box(6), LatchSegment * 1.33)Box(9).X = Box(8).X + LatchSegment * 0.588235294117647Box(9).Y = Box(8).Y - LatchSegment / 6Box(10) = GetTranslatedLinePoint(Box(5), Box(6), Box(9))Box(10) = AdjustLineLength(Box(9), Box(10), LatchSegment * 1.5)’Draw the Top LatchesDone = DrawLine(Box(3), Box(5))Done = DrawLine(Box(5), Box(6))Done = DrawLine(Box(6), Box(7))Done = DrawLine(Box(7), Box(8))Done = DrawLine(Box(8), Box(9))Done = DrawLine(Box(9), Box(10))Done = DrawLine(Box(10), Box(11))Done = DrawLine(Box(11), Box(4))’Latches for Box(4) to Box(0)Box(13) = GetLineDivisorPoint(Box(4), Box(0), 4, 1)Box(14) = GetLineDivisorPoint(Box(4), Box(0), 4, 2)Box(17) = GetLineDivisorPoint(Box(4), Box(0), 4, 3)Box(12) = GetPerpendicularLinePoint(Box(13), Box(0), LatchDepth)Box(12).X = Box(13).X + LatchSegment / 4Box(12).Y = Box(13).Y + LatchSegment / 6Box(12) = AdjustLineLength(Box(13), Box(12), LatchDepth)Box(15).X = Box(14).X + LatchSegment * 0.588235294117647Box(15).Y = Box(14).Y + LatchSegment / 6Box(16) = GetTranslatedLinePoint(Box(17), Box(0), Box(15))Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Box(15) = AdjustLineLength(Box(16), Box(15), LatchSegment * 2)Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Done = DrawLine(Box(4), Box(12))Done = DrawLine(Box(12), Box(13))Done = DrawLine(Box(13), Box(14))Done = DrawLine(Box(14), Box(15))Done = DrawLine(Box(15), Box(16))Done = DrawLine(Box(16), Box(17))Done = DrawLine(Box(17), Box(0))’Draw the Score LinesDone = DrawLine(Box(3), Box(7))Done = DrawLine(Box(8), Box(11))Done = DrawLine(Box(4), Box(13))Done = DrawLine(Box(14), Box(17))Next iEnd Sub SubProject_Multiplying_With_Scale_Shift_AND_SLOTS()’VariablesDim Box(17) As Point3dDim Slots(4) As Point3dDim PtScore(4) As Point3dDim Pt1 As Point3dDim Pt2 As Point3dDim Pt3 As Point3dDim Pt4 As Point3dDim Pt5 As Point3dDim Pt6 As Point3dDim ArmLength As DoubleDim TriLength As DoubleDim LatchSegment As DoubleDim LatchDepth As DoubleDim ScaleUP As DoubleDim i As IntegerDim Max As IntegerDim Rotation As Double ‘ParametersTriLength = ‘Two feet to begin withScaleUP = 1.045‘Percentage to increase per LoopRotation = (0.07 * TriLength’Rotation Decimal must fall between -0.07 < x < 0.07 Thicontrols the twisting of the spire, clockwise = +, counterclockwise = -’X-Axis Spacing of PiecesMax = ‘Number of Pieces’Call out first start pointBox(0).X = 10Box(0).Y = 1 ‘OperationsFor i = 1 To Max’Set ScalingTriLength = TriLength * ScaleUPArmLength = TriLength * ScaleUP’Get Box PointsBox(0).X = 10 + Spacing * i * ScaleUP * 1.75Box(0).Y = 10Box(1).X = Box(0).X - TriLengthBox(1).Y = Box(0).YBox(2).X = Box(1).XBox(2).Y = Box(1).Y + TriLengthBox(3).X = Box(0).XBox(3).Y = Box(2).YBox(4).X = Box(0).X - TriLength / 2Box(4).Y = Box(1).Y + TriLength / 2’Draw the BoxDone = DrawLine(Box(0), Box(1))Done = DrawLine(Box(1), Box(2))Done = DrawLine(Box(2), Box(3))’Get the Midpoints’Then Get the perpendicular pointsPt1 = GetLineDivisorPoint(Box(0), Box(1), 2, 1)Pt2 = GetLineDivisorPoint(Box(1), Box(2), 2, 1)Pt3 = GetLineDivisorPoint(Box(2), Box(3), 2, 1)Pt4 = GetPerpendicularLinePoint(Pt1, Box(1), ArmLength)Pt5 = GetPerpendicularLinePoint(Pt2, Box(2), ArmLengthPt6 = GetPerpendicularLinePoint(Pt3, Box(3), ArmLength)’Draw the ArmsDone = DrawLine(Box(0), Pt4)Done = DrawLine(Box(1), Pt4)Done = DrawLine(Box(1), Pt5)Done = DrawLine(Box(2), Pt5)Done = DrawLine(Box(2), Pt6)Done = DrawLine(Box(3), Pt6)’Draw the Slots BottomSlots(0).X = Pt1.X - RotationSlots(0).Y = Pt1.Y - (ArmLength / Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0). YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots MiddleSlots(0).X = Pt2.X - (ArmLength / 5)Slots(0).Y = Pt2.Y + RotationSlots(1).X = Slots(0).XSlots(1).Y = Slots(0).Y + (TriLength * 0.25)Slots(2).Y = Slots(0).Y - (TriLength * 0.25)Slots(2).X = Slots(0).(3).X = Slots(0).X - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (TriLength * 0.2)Slots(4).X = Slots(0).X - (ArmLength / 24)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots Top Slots(0).X = Pt3.X + RotationSlots(0).Y = Pt3.Y + (ArmLength / 5)Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y + (ArmLength / 24)Slots(4).Y = Slots(0).Y + (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Score Lines BottomPtScore(0).X = Pt4.XPtScore(0).Y = Pt4.Y + (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(1), Box(0), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(0), Pt4, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(0), Box(1), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(1), Pt4, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt4)Done = DrawLine(PtScore(3), Pt4)Done = DrawLine(PtScore(4), Pt4)Done = DrawLine(Box(1), Box(4))Done = DrawLine(Box(2), Box(4))’Draw the Score Lines MiddlePtScore(0).X = Pt5.X + (ArmLength * 0.5)PtScore(0).Y = Pt5.YPtScore(1) = GetTranslatedLinePoint(Box(2), Box(1), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(1), Pt5, PtScore(0), PtScore(1))PtScore(2) = GetLineIntersectionPoint(Box(2), Pt5, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt5)Done = DrawLine(PtScore(3), Pt5)Done = DrawLine(PtScore(4), Pt5)’Draw the Score Lines TopPtScore(0).X = Pt6.XPtScore(0).Y = Pt6.Y - (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(3), Box(2), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(2), Pt6, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(2), Box(3), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(3), Pt6, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt6)Done = DrawLine(PtScore(3), Pt6)Done = DrawLine(PtScore(4), Pt6)‘Get the Latch Pointsout Latch Segment and DepthLatchSegment = GetDistance(Box(3), Box(4)) / 4LatchDepth = GetDistance(Box(3), Box(4)) / 8’Latches for Box(3) to Box(4)Box(7) = GetLineDivisorPoint(Box(3), Box(4), 4, 1)Box(8) = GetLineDivisorPoint(Box(3), Box(4), 4, 2)Box(11) = GetLineDivisorPoint(Box(3), Box(4), 4, 3)Box(5) = GetPerpendicularLinePoint(Box(3), Box(4), LatchDepth)Box(6) = GetTranslatedLinePoint(Box(4), Box(1), Box(5))Box(6) = AdjustLineLength(Box(5), Box(6), LatchSegment * 1.33)Box(9).X = Box(8).X + LatchSegment * 0.588235294117647Box(9).Y = Box(8).Y - LatchSegment / 6Box(10) = GetTranslatedLinePoint(Box(5), Box(6), Box(9))Box(10) = AdjustLineLength(Box(9), Box(10), LatchSegment * 1.5)’Draw the Top LatchesDone = DrawLine(Box(3), Box(5))Done = DrawLine(Box(5), Box(6))Done = DrawLine(Box(6), Box(7))Done = DrawLine(Box(7), Box(8))Done = DrawLine(Box(8), Box(9))Done = DrawLine(Box(9), Box(10))Done = DrawLine(Box(10), Box(11))Done = DrawLine(Box(11), Box(4))’Latches for Box(4) to Box(0)Box(13) = GetLineDivisorPoint(Box(4), Box(0), 4, 1)Box(14) = GetLineDivisorPoint(Box(4), Box(0), 4, 2)Box(17) = GetLineDivisorPoint(Box(4), Box(0), 4, 3)Box(12) = GetPerpendicularLinePoint(Box(13), Box(0), LatchDepth)Box(12).X = Box(13).X + LatchSegment / 4Box(12).Y = Box(13).Y + LatchSegment / 6Box(12) = AdjustLineLength(Box(13), Box(12), LatchDepth)Box(15).X = Box(14).X + LatchSegment * 0.588235294117647Box(15).Y = Box(14).Y + LatchSegment / 6Box(16) = GetTranslatedLinePoint(Box(17), Box(0), Box(15))Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Box(15) = AdjustLineLength(Box(16), Box(15), LatchSegment * 2)Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Done = DrawLine(Box(4), Box(12))Done = DrawLine(Box(12), Box(13))Done = DrawLine(Box(13), Box(14))Done = DrawLine(Box(14), Box(15))Done = DrawLine(Box(15), Box(16))Done = DrawLine(Box(16), Box(17))Done = DrawLine(Box(17), Box(0))’Draw the Score LinesDone = DrawLine(Box(3), Box(7))Done = DrawLine(Box(8), Box(11))Done = DrawLine(Box(4), Box(13))Done = DrawLine(Box(14), Box(17))Next iEnd Sub SubProject_Multiplying_With_Scale_Shift_AND_SLOTS()’VariablesDim Box(17) As Point3dDim Slots(4) As Point3dDim PtScore(4) As Point3dDim Pt1 As Point3dDim Pt2 As Point3dDim Pt3 As Point3dDim Pt4 As Point3dDim Pt5 As Point3dDim Pt6 As Point3dDim ArmLength As DoubleDim TriLength As DoubleDim LatchSegment As DoubleDim LatchDepth As DoubleDim ScaleUP As DoubleDim i As IntegerDim Max As IntegerDim Rotation As Double ‘ParametersTriLength = ‘Two feet to begin withScaleUP = 1.045‘Percentage to increase per LoopRotation = (0.07 * TriLength’Rotation Decimal must fall between -0.07 < x < 0.07 Thicontrols the twisting of the spire, clockwise = +, counterclockwise = -’X-Axis Spacing of PiecesMax = ‘Number of Pieces’Call out first start pointBox(0).X = 10Box(0).Y = 1 ‘OperationsFor i = 1 To Max’Set ScalingTriLength = TriLength * ScaleUPArmLength = TriLength * ScaleUP’Get Box PointsBox(0).X = 10 + Spacing * i * ScaleUP * 1.75Box(0).Y = 10Box(1).X = Box(0).X - TriLengthBox(1).Y = Box(0).YBox(2).X = Box(1).XBox(2).Y = Box(1).Y + TriLengthBox(3).X = Box(0).XBox(3).Y = Box(2).YBox(4).X = Box(0).X - TriLength / 2Box(4).Y = Box(1).Y + TriLength / 2’Draw the BoxDone = DrawLine(Box(0), Box(1))Done = DrawLine(Box(1), Box(2))Done = DrawLine(Box(2), Box(3))’Get the Midpoints’Then Get the perpendicular pointsPt1 = GetLineDivisorPoint(Box(0), Box(1), 2, 1)Pt2 = GetLineDivisorPoint(Box(1), Box(2), 2, 1)Pt3 = GetLineDivisorPoint(Box(2), Box(3), 2, 1)Pt4 = GetPerpendicularLinePoint(Pt1, Box(1), ArmLength)Pt5 = GetPerpendicularLinePoint(Pt2, Box(2), ArmLengthPt6 = GetPerpendicularLinePoint(Pt3, Box(3), ArmLength)’Draw the ArmsDone = DrawLine(Box(0), Pt4)Done = DrawLine(Box(1), Pt4)Done = DrawLine(Box(1), Pt5)Done = DrawLine(Box(2), Pt5)Done = DrawLine(Box(2), Pt6)Done = DrawLine(Box(3), Pt6)’Draw the Slots BottomSlots(0).X = Pt1.X - RotationSlots(0).Y = Pt1.Y - (ArmLength / Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots MiddleSlots(0).X = Pt2.X - (ArmLength / 5)Slots(0).Y = Pt2.Y + RotationSlots(1).X = Slots(0).XSlots(1).Y = Slots(0).Y + (TriLength * 0.25)Slots(2).Y = Slots(0).Y - (TriLength * 0.25)Slots(2).X = Slots(0).(3).X = Slots(0).X - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (TriLength * 0.2)Slots(4).X = Slots(0).X - (ArmLength / 24)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots Top Slots(0).X = Pt3.X + RotationSlots(0).Y = Pt3.Y + (ArmLength / 5)Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y + (ArmLength / 24)Slots(4).Y = Slots(0).Y + (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Score Lines BottomPtScore(0).X = Pt4.XPtScore(0).Y = Pt4.Y + (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(1), Box(0), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(0), Pt4, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(0), Box(1), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(1), Pt4, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt4)Done = DrawLine(PtScore(3), Pt4)Done = DrawLine(PtScore(4), Pt4)Done = DrawLine(Box(1), Box(4))Done = DrawLine(Box(2), Box(4))’Draw the Score Lines MiddlePtScore(0).X = Pt5.X + (ArmLength * 0.5)PtScore(0).Y = Pt5.YPtScore(1) = GetTranslatedLinePoint(Box(2), Box(1), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(1), Pt5, PtScore(0), PtScore(1))PtScore(2) = GetLi neIntersectionPoint(Box(2), Pt5, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt5)Done = DrawLine(PtScore(3), Pt5)Done = DrawLine(PtScore(4), Pt5)’Draw the Score Lines TopPtScore(0).X = Pt6.XPtScore(0).Y = Pt6.Y - (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(3), Box(2), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(2), Pt6, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(2), Box(3), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(3), Pt6, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), PtScore(2), 2, 1)Done = DrawLine(PtScore(1), PtScore(2))Done = DrawLine(PtScore(0), Pt6)Done = DrawLine(PtScore(3), Pt6)Done = DrawLine(PtScore(4), Pt6)‘Get the Latch Pointsout Latch Segment and DepthLatchSegment = GetDistance(Box(3), Box(4)) / 4LatchDepth = GetDistance(Box(3), Box(4)) / 8’Latches for Box(3) to Box(4)Box(7) = GetLineDivisorPoint(Box(3), Box(4), 4, 1)Box(8) = GetLineDivisorPoint(Box(3), Box(4), 4, 2)Box(11) = GetLineDivisorPoint(Box(3), Box(4), 4, 3)Box(5) = GetPerpendicularLinePoint(Box(3), Box(4), LatchDepth)Box(6) = GetTranslatedLinePoint(Box(4), Box(1), Box(5))Box(6) = AdjustLineLength(Box(5), Box(6), LatchSegment * 1.33)Box(9).X = Box(8).X + LatchSegment * 0.588235294117647Box(9).Y = Box(8).Y - LatchSegment / 6Box(10) = GetTranslatedLinePoint(Box(5), Box(6), Box(9))Box(10) = AdjustLineLength(Box(9), Box(10), LatchSegment * 1.5)’Draw the Top LatchesDone = DrawLine(Box(3), Box(5))Done = DrawLine(Box(5), Box(6))Done = DrawLine(Box(6), Box(7))Done = DrawLine(Box(7), Box(8))Done = DrawLine(Box(8), Box(9))Done = DrawLine(Box(9), Box(10))Done = DrawLine(Box(10), Box(11))Done = DrawLine(Box(11), Box(4))’Latches for Box(4) to Box(0)Box(13) = GetLineDivisorPoint(Box(4), Box(0), 4, 1)Box(14) = GetLineDivisorPoint(Box(4), Box(0), 4, 2)Box(17) = GetLineDivisorPoint(Box(4), Box(0), 4, 3)Box(12) = GetPerpendicularLinePoint(Box(13), Box(0), LatchDepth)Box(12).X = Box(13).X + LatchSegment / 4Box(12).Y = Box(13).Y + LatchSegment / 6Box(12) = AdjustLineLength(Box(13), Box(12), LatchDepth)Box(15).X = Box(14).X + LatchSegment * 0.588235294117647Box(15).Y = Box(14).Y + LatchSegment / 6Box(16) = GetTranslatedLinePoint(Box(17), Box(0), Box(15))Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Box(15) = AdjustLineLength(Box(16), Box(15), LatchSegment * 2)Box(16) = AdjustLineLength(Box(15), Box(16), LatchSegment * 1.5)Done = DrawLine(Box(4), Box(12))Done = DrawLine(Box(12), Box(13))Done = DrawLine(Box(13), Box(14))Done = DrawLine(Box(14), Box(15))Done = DrawLine(Box(15), Box(16))Done = DrawLine(Box(16), Box(17))Done = DrawLine(Box(17), Box(0))’Draw the Score LinesDone = DrawLine(Box(3), Box(7))Done = DrawLine(Box(8), Box(11))Done = DrawLine(Box(4), Box(13))Done = DrawLine(Box(14), Box(17))Next iEnd Sub SubProject_Multiplying_With_Scale_Shift_AND_SLOTS()’VariablesDim Box(17) As Point3dDim Slots(4) As Point3dDim PtScore(4) As Point3dDim Pt1 As Point3dDim Pt2 As Point3dDim Pt3 As Point3dDim Pt4 As Point3dDim Pt5 As Point3dDim Pt6 As Point3dDim ArmLength As DoubleDim TriLength As DoubleDim LatchSegment As DoubleDim LatchDepth As DoubleDim ScaleUP As DoubleDim i As IntegerDim Max As IntegerDim Rotation As Double ‘ParametersTriLength = ‘Two feet to begin withScaleUP = 1.045‘Percentage to increase per LoopRotation = (0.07 * TriLength’Rotation Decimal must fall between -0.07 < x < 0.07 Thicontrols the twisting of the spire, clockwise = +, counterclockwise = -’X-Axis Spacing of PiecesMax = ‘Number of Pieces’Call out first start pointBox(0).X = 10Box(0).Y = 1 ‘OperationsFor i = 1 To Max’Set ScalingTriLength = TriLength * ScaleUPArmLength = TriLength * ScaleUP’Get Box PointsBox(0).X = 10 + Spacing * i * ScaleUP * 1.75Box(0).Y = 10Box(1).X = Box(0).X - TriLengthBox(1).Y = Box(0).YBox(2).X = Box(1).XBox(2).Y = Box(1).Y + TriLengthBox(3).X = Box(0).XBox(3).Y = Box(2).YBox(4).X = Box(0).X - TriLength / 2Box(4).Y = Box(1).Y + TriLength / 2’Draw the BoxDone = DrawLine(Box(0), Box(1))Done = DrawLine(Box(1), Box(2))Done = DrawLine(Box(2), Box(3))’Get the Midpoints’Then Get the perpendicular pointsPt1 = GetLineDivisorPoint(Box(0), Box(1), 2, 1)Pt2 = GetLineDivisorPoint(Box(1), Box(2), 2, 1)Pt3 = GetLineDivisorPoint(Box(2), Box(3), 2, 1)Pt4 = GetPerpendicularLinePoint(Pt1, Box(1), ArmLength)Pt5 = GetPerpendicularLinePoint(Pt2, Box(2), ArmLengthPt6 = GetPerpendicularLinePoint(Pt3, Box(3), ArmLength)’Draw the ArmsDone = DrawLine(Box(0), Pt4)Done = DrawLine(Box(1), Pt4)Done = DrawLine(Box(1), Pt5)Done = DrawLine(Box(2), Pt5)Done = DrawLine(Box(2), Pt6)Done = DrawLine(Box(3), Pt6)’Draw the Slots BottomSlots(0).X = Pt1.X - RotationSlots(0).Y = Pt1.Y - (ArmLength / Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots MiddleSlots(0).X = Pt2.X - (ArmLength / 5)Slots(0).Y = Pt2.Y + RotationSlots(1).X = Slots(0).XSlots(1).Y = Slots(0).Y + (TriLength * 0.25)Slots(2).Y = Slots(0).Y - (TriLength * 0.25)Slots(2).X = Slots(0).(3).X = Slots(0).X - (ArmLength / 24)Slots(4).Y = Slots(0).Y - (TriLength * 0.2)Slots(4).X = Slots(0).X - (ArmLength / 24)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Slots Top Slots(0).X = Pt3.X + RotationSlots(0).Y = Pt3.Y + (ArmLength / 5)Slots(1).X = Slots(0).X + (TriLength * 0.25)Slots(1).Y = Slots(0).YSlots(2).Y = Slots(0).YSlots(2).X = Slots(0).X - (TriLength * 0.25)Slots(3).X = Slots(0).X + (TriLength * 0.2)Slots(3).Y = Slots(0).Y + (ArmLength / 24)Slots(4).Y = Slots(0).Y + (ArmLength / 24)Slots(4).X = Slots(0).X - (TriLength * 0.2)Done = DrawLine(Slots(1), Slots(2))Done = DrawLine(Slots(3), Slots(4))’Draw the Score Lines BottomPtScore(0).X = Pt4.XPtScore(0).Y = Pt4.Y + (ArmLength * 0.5)PtScore(1) = GetTranslatedLinePoint(Box(1), Box(0), PtScore(0))PtScore(1) = GetLineIntersectionPoint(Box(0), Pt4, PtScore(0), PtScore(1))PtScore(2) = GetTranslatedLinePoint(Box(0), Box(1), PtScore(0))PtScore(2) = GetLineIntersectionPoint(Box(1), Pt4, PtScore(0), PtScore(2))PtScore(3) = GetLineDivisorPoint(PtScore(0), PtScore(1), 2, 1)PtScore(4) = GetLineDivisorPoint(PtScore(0), (Pt3, Box(3), ArmLength)’Draw the (Pt3, Box(3), ArmLength)’Draw the (Pt3, Box(3), ArmLength)’Draw thev (Pt3, Box(3), ArmLength)’Draw the (Pt3, Box(3), ArmLength)’Draw the (Pt3, Box(3), ArmLength)’Draw the (Pt3, Box(3), ArmLength)’Draw the (Pt3, Box(3), ArmLength)’Draw the (Pt3, Box(3),


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.