'******************************************************** '* FLAGCOMB.bas is a DeltaCad macro for producing a * '* Folding Combo - Sun Compass and Sundial with tables * '* for Longitude Correction and EOT Correction. * '* Created by Valentin Hristov (valhrist@bas.bg). * '* I was inspired by Mac Oglesby to use the * '* North American Sundial Society DeltaCad programs * '* as tutorials (http://sundials.org) * '* and made with DeltaCad (www.deltacad.com) * '* different types of sundials. * '******************************************************** '* Flag Combo - Sun Compass and Sundial '* Author: Valentin Hristov '* E-mail: valhrist@bas.bg '* Web site: www.math.bas.bg/coplan/valhrist/mystuff.htm '* April 2009 '* --------------------- '* Steps for assembling: '* --------------------- '* Long dashes indicate mountain folds. '* Short dashes indicate valley folds. '* --------------- '* 1) Sun Compass: '* a) Flag '* Cut the central piece (with the date scale). '* Cut the two "aim" teeth and fold them. '* Make the central valley fold and the two parallel mountain folds. '* Stick the two small teeth under the opposite sides to close the '* pocket for the Sliding Date Indicator. '* Stick the rest of the flag and the latitude scales together. '* b) Sliding Date Indicator '* Stick it as a "T-shape" and make the two holes for the light. '* c) Base pocket '* Cut one of the pieces on the right and fold it. '* Stick the small tooth from inside to close the pocket. '* Cut one of the pieces on the left and use it to stick the two '* triangular ends of the pocket. '* ---------------- '* 2) Sundial part: '* a) Hour scale and corrections '* Cut and fold the central piece with two big semi-circles. '* Cut and stick the separate small semi-circular piece with additional '* slit in the middle of the main piece under the small semi-circle. '* Cut the common slit. '* Stick the backs of both big semi-circles (without the small one). '* Stick both small folded squares to the back of the Longitude '* Correction part. '* b) Support for the hour scale '* (This is the only part of the construction which is made for a fixed '* latitude) '* Fold the two equal parts according to the fixed latitude. '* Stick their bigger parts (the squares and the part of the latitude '* scale to the latitude). '* Stick the semi-circle on the free ends. '* (If you want to use the support for different latitudes, simply cut '* and stick only both quarter-circles with the latitude scales and fix '* this piece to the pocket by a paper-clip.) '* c) Base pocket '* The same as for the Compass. '* --------------- '* 3) Common base: '* Stick the big rectangle under the two adjacent equal pockets. '* ------------------- '* Instruction for use '* ------------------- '* Only Sun Compass: '* ----------------- '* Be sure that the flag quarter circle with latitudes can be easily '* folded in both directions. (Only the one for Northern or Southern '* latitudes is enough.) '* Put this quarter circle into the base pocket adjusting the latitude. '* Use a paper-clip to fix the position. '* Adjust the position of the "T-shape" piece according to the date. '* Rotate simultaneously the flag and the base until the light through '* the holes reaches the aims. '* Be careful because this happens two times a day - where the height '* (elevation) of the sun is one and the same. Ones it is before the '* local noon and a second time after the local noon. '* If your choice is proper, then the axis of rotation of the flag is '* in the Celestial North-South direction and the base pocket shows the '* surface North-South direction. '* Note: Only one pocket is enough for Sun Compass '* -------------- '* Sundial added: '* Insert the support for the hour scale into the second pocket with the '* lower side in the middle of the base. '* Insert vertically the Sundial part in the middle of the base with the '* Longitude Correction part to the Support. The two free ends must be on '* both sides of the Compass pocket. '* Tilt the big hour scale to lie on the Support. Then the Compass pocket '* must be in the slit of the small hour scale. '* Insert the flag into its pocket according to the latitude and use a '* paper-clip to fix it together with the two free ends of the Sundial '* part. '* Find the North-South direction as described in the Sun Compass part. '* Then the flag position determines the LOCAL TIME!!! '* For the Civil Time two corrections are needed: '* - Equation of Time Correction (given as a graph in min) for the date and '* - Longitude Correction (in min) with respect to the Central Meridian of '* the Time Zone. '* 4 minutes correspond to 1 degree. '* If the place is to the West (East) of the Central Meridian, then '* add (subtract) the correction. '* For Daylight Savings Time a third correction is needed: '* - Add one hour. '* ------------- '* Flat folding: '* ------------- '* - Adjust longitude 0 for the flag, i.e. put it vertically. '* - Return the hour scale to vertical position. '* - Rotate the hour scale from 90 to 0 degrees with respect to the base '* pockets. This can be done only simultaneously with rotation of the '* half-circular part of the support. '* - Rotate the triangular parts of the base. '* - Rotate the bottom of the base. '* - Fold the "T-shape" piece and put it into the pocket. '* ------------- '* You can see the picture of another type of sundial generated by one '* of my DeltaCad macros at '* www.flickr.com/photos/Valentin_Hristov/261303801/ '* Click on the button "All sizes" to see a bigger photo with details. '* I am very grateful to my friends Daniela (www.danyo.net) and '* Todor (www.todor.org) who converted my drawing into a real art piece!!! '* There is a Demo version of DeltaCad at www.deltacad.com. '* Use the menu "Options - Macro - Run..." or the separate "Macro" '* button - "Edit Macro List", add the file, and "Run Macro". '* E N J O Y !!! Dim button,choice,fc,pi,d2r,i,sa,ca,a,b,w,ha as Double Dim decl(366),ind(37),eot(366),spl(366) as Double Dim mon(13) as String dcSetLineParms dcBlack,dcSolid,dcThin dcSetDrawingWindowMode dcMaximizeWin dcCloseWithoutSaving dcNew "" dcSetDrawingScale 25.4 'mm '************************************** 'Start of program call Combo '******************** Sub Combo Input_constants_of_sundial if button=0 then goto cncl Main dcViewAll cncl: End Sub 'End of program '************************************** 'Start of subroutines ''''''''''''''''''''''''''''''''''''''' Sub Input_constants_of_sundial Begin Dialog CONSTANTS_INPUT 13,1,180,60,"Choice" Text 15,5,180,10, "COMBO FLAG: SUN COMPASS AND SUNDIAL" Text 20,25,150,10, "What to draw ?" OptionGroup .choice OptionButton 80,20,80,10, "Only Compass Part" OptionButton 80,30,80,10, "Only Sundial Part" OKButton 40,45,37,12 CANCELButton 100,45,37,12 End Dialog 'Initialize Dim prompt As constants_input prompt.choice = 0 'Compass(0) or Sundial(1) repeat_until_inputcorrect: 'label to return if input is not correct button = Dialog(prompt) 'get the input If button=0 Then GoTo end_input 'Set program variables with input variables, angles in degrees choice=prompt.choice if choice=0 then fc=1 else fc=0 end_input: End Sub ''''''''''''''''''''''''''''''''''''''' Sub Main pi=Atn(1)*4 d2r=pi/180 dcCreateLine 105,-148.5,105,148.5 dcCreateLine -105,-148.5,-105,148.5 dcCreateLine 105,-148.5,-105,-148.5 dcCreateLine 105,148.5,-105,148.5 ind( 1)= 1 '1Jan ind( 2)= 11 ind( 3)= 21 ind( 4)= 32 '1Feb ind( 5)= 42 ind( 6)= 52 ind( 7)= 60 '1Mar ind( 8)= 70 ind( 9)= 80 ind(10)= 91 '1Apr ind(11)=101 ind(12)=111 ind(13)=121 '1May ind(14)=131 ind(15)=141 ind(16)=152 '1Jun ind(17)=162 ind(18)=172 ind(19)=182 '1Jul ind(20)=192 ind(21)=202 ind(22)=213 '1Aug ind(23)=223 ind(24)=233 ind(25)=244 '1Sep ind(26)=254 ind(27)=264 ind(28)=274 '1Oct ind(29)=284 ind(30)=294 ind(31)=305 '1Nov ind(32)=315 ind(33)=325 ind(34)=335 '1Dec ind(35)=345 ind(36)=355 ind(37)=366 '1Jan mon( 1) = "J" mon( 2) = "F" mon( 3) = "M" mon( 4) = "A" mon( 5) = "M" mon( 6) = "J" mon( 7) = "J" mon( 8) = "A" mon( 9) = "S" mon(10) = "O" mon(11) = "N" mon(12) = "D" mon(13) = "J" if fc=1 then Compass else Sundial End Sub ''''''''''''''''''''''''''''''''' Sub Compass dcCreateLine -40,140,-40,20 dcCreateLine -40,10,-40,-140 dcCreateLine 40,-140,40,-20 dcCreateLine 40,-10,40,140 dcCreateLine 0,80,0,90 dcCreateLine 0,-80,0,-90 dcCreateLine -10,90,10,90 dcCreateLine -10,-90,10,-90 dcCreateLine 10,90,10,80 dcCreateLine -10,90,-10,80 dcCreateLine 10,-90,10,-80 dcCreateLine -10,-90,-10,-80 dcCreateLine -5,85,5,85 dcCreateLine -5,-85,5,-85 dcCreateLine -40,10,-45,10 dcCreateLine -45,10,-45,20 dcCreateLine -45,20,-40,20 dcCreateLine 40,-10,45,-10 dcCreateLine 45,-20,40,-20 dcCreateLine -65,10,-65,13 dcCreateLine -65,-10,-65,-13 dcCreateLine -45,140,-45,60 dcCreateLine -45,140,-60,140 dcCreateLine -45,60,-60,60 dcCreateLine -60,60,-90,100 dcCreateLine -60,140,-90,100 dcCreateLine -105,100,-90,100 dcCreateLine -105,20,-90,20 dcCreateLine -60,60,-90,20 dcCreateLine -45,-140,-45,-60 dcCreateLine -75,-140,-75,-60 dcCreateLine -75,-140,-45,-140 dcCreateLine -75,-60,-45,-60 dcCreateLine -75,-100,-73,-100 dcCreateLine -45,-100,-47,-100 dcSetLineParms dcBlack,dcCutting,dcThin dcCreateLine -70,-20,-60,-20 dcCreateLine -40,10,40,10 dcCreateLine -40,-10,40,-10 dcCreateLine -40,100,40,100 dcCreateLine -40,-100,40,-100 dcCreateLine -40,10,-40,20 dcCreateLine 40,-20,40,-10 dcCreateLine 100,60,60,60 dcCreateLine 100,100,90,100 dcCreateLine 60,-20,60,20 dcCreateLine 60,100,60,140 dcCreateLine 50,-60,90,-60 dcCreateLine 50,-100,60,-100 dcCreateLine 90,20,90,-20 dcCreateLine 90,-100,90,-140 dcCreateLine -70,0,-60,0 dcSetLineParms dcBlack,dcStitch,dcThin dcCreateLine -40,0,40,0 dcCreateLine -10,80,10,80 dcCreateLine -10,-80,10,-80 dcCreateLine 90,20,60,20 dcCreateLine 90,100,60,100 dcCreateLine 60,20,60,100 dcCreateLine 60,-20,90,-20 dcCreateLine 60,-100,90,-100 dcCreateLine 90,-20,90,-100 dcCreateLine -70,10,-60,10 dcCreateLine -70,-10,-60,-10 dcCreateLine -60,140,-60,60 dcCreateLine -90,100,-90,20 dcSetLineParms dcBlack,dcArrow,dcThin dcCreateLine 0,70,0,42 dcCreateLine 0,-70,0,-42 dcCreateLine 2,70,11,25 dcCreateLine -2,70,-11,25 dcCreateLine 2,-70,11,-25 dcCreateLine -2,-70,-11,-25 dcCreateLine 0,-80,-70*Tan(23.47*d2r),-10 dcCreateLine 0,-80,70*Tan(23.47*d2r),-10 dcCreateLine 0,80,-70*Tan(23.47*d2r),10 dcCreateLine 0,80,70*Tan(23.47*d2r),10 dcCreateLine -85,-75,-85,-15 dcCreateLine -95,-75,-95,-15 dcSetLineParms dcBlack,dcSolid,dcThin dcCreateCircle 0,85,2.5 dcCreateCircle 0,85,5 dcCreateCircle 0,-85,2.5 dcCreateCircle 0,-85,5 dcCreateCircleEx 40,100,40,140,0,100,40,40,90,0 dcCreateCircleEx -40,-100,-40,-140,0,-100,40,40,90,0 dcCreateCircleEx -40,100,0,100,-40,140,40,40,90,0 dcCreateCircleEx 40,-100,0,-100,40,-140,40,40,90,0 dcCreateLine 45,140,45,-20 dcCreateLine 60,-20,45,-20 dcCreateLine 60,20,45,20 dcCreateLine 60,60,45,60 dcCreateLine 60,100,45,100 dcCreateLine 60,140,45,140 dcCreateLine 100,20,100,110 dcCreateLine 100,110,90,110 dcCreateLine 90,100,60,140 dcCreateLine 100,20,90,20 dcCreateLine 90,100,90,110 dcCreateLine 90,20,105,20 dcCreateLine 90,-20,105,-20 dcCreateLine 90,-60,105,-60 dcCreateLine 90,-100,105,-100 dcCreateLine 90,-140,105,-140 dcCreateLine 50,-20,50,-110 dcCreateLine 50,-110,60,-110 dcCreateLine 60,-20,90,20 dcCreateLine 60,-100,90,-140 dcCreateLine 50,-20,60,-20 dcCreateLine 60,-100,60,-110 dcCreateLine -60,20,-60,-40 dcCreateLine -70,20,-70,-40 dcCreateLine -70,20,-60,20 dcCreateLine -70,-40,-60,-40 dcCreateCircle -65,15,1 dcCreateCircle -65,-15,1 dcCreateCircle -65,-25,1 dcCreateCircle -65,-35,1 dcCreateLine -60,0,-40,0 dcCreateLine -60,0,-55,5 dcCreateLine -60,0,-55,-5 dcCreateLine -40,0,-45,5 dcCreateLine -40,0,-45,-5 dcCreateLine -100,-10,-90.5,-10 dcCreateLine -90.5,-10,-90,-18 dcCreateLine -90,-18,-89.5,-10 dcCreateLine -89.5,-10,-80,-10 dcCreateLine -91,-11,-90,-21 dcCreateLine -90,-21,-89,-11 dcCreateLine -90,-21,-90,-140 dcCreateLine -100,-80,-80,-80 dcCreateCircle -95,-10,1 dcCreateCircle -85,-10,1 dcCreateCircle -95,-80,1 dcCreateCircle -85,-80,1 dcCreateCircle -90,-100,1 dcCreateCircleEx -90,-100,-80,-100,-100,-100,10,10,0,0 dcCreateLine -100,-100,-102,-98 dcCreateLine -100,-100,-98,-98 dcCreateLine -80,-100,-82,-98 dcCreateLine -80,-100,-78,-98 dcSetTextParms dcBlack,"Times New Roman","Bold",-90,15,21,0,0 for i=-1 to 1 step 2 dcCreateText 35,i*15,0,"N" dcCreateText -35,i*15,0,"S" next i dcSetTextParms dcBlack,"Times New Roman","Bold",45,8,21,0,0 dcCreateText -30,-110,0,"NORTHERN" dcCreateText -25,-115,0,"LATITUDES" dcSetTextParms dcBlack,"Times New Roman","Bold",135,8,21,0,0 dcCreateText -30,110,0,"NORTHERN" dcCreateText -25,115,0,"LATITUDES" dcSetTextParms dcBlack,"Times New Roman","Bold",-135,8,21,0,0 dcCreateText 30,110,0,"SOUTHERN" dcCreateText 25,115,0,"LATITUDES" dcSetTextParms dcBlack,"Times New Roman","Bold",-45,8,21,0,0 dcCreateText 30,-110,0,"SOUTHERN" dcCreateText 25,-115,0,"LATITUDES" dcSetTextParms dcBlack,"Times New Roman","Bold",180,10,21,0,0 dcCreateText 0,93,0,"FLAG COMBO" dcCreateText 0,97.5,0,"SUN COMPASS & SUNDIAL" dcSetTextParms dcBlack,"Times New Roman","Bold",0,7,21,0,0 dcCreateText 0,-93.3,0,"Author: Valentin Hristov E-mail: valhrist@bas.bg" dcCreateText 0,-96.6,0,"Web page: www.math.bas.bg/complan/valhrist/mystuff.htm" for i=5 to 85 step 5 sa=sin(i*d2r) ca=cos(i*d2r) dcCreateLine 40-37*ca,100+37*sa,40-40*ca,100+40*sa dcCreateLine 40-37*ca,-100-37*sa,40-40*ca,-100-40*sa dcCreateLine -40+37*ca,100+37*sa,-40+40*ca,100+40*sa dcCreateLine -40+37*ca,-100-37*sa,-40+40*ca,-100-40*sa if i=Int(i/15)*15 then dcCreateLine 40-35*ca,100+35*sa,40-40*ca,100+40*sa dcCreateLine 40-35*ca,-100-35*sa,40-40*ca,-100-40*sa dcSetTextParms dcBlack,"Times New Roman","Bold",-90-i,8,21,0,0 dcCreateText 40-33*ca,100+33*sa,0,i dcSetTextParms dcBlack,"Times New Roman","Bold",-90+i,8,21,0,0 dcCreateText 40-33*ca,-100-33*sa,0,i dcCreateLine -40+35*ca,100+35*sa,-40+40*ca,100+40*sa dcCreateLine -40+35*ca,-100-35*sa,-40+40*ca,-100-40*sa dcSetTextParms dcBlack,"Times New Roman","Bold",90-i,8,21,0,0 dcCreateText -40+33*ca,-100-33*sa,0,i dcSetTextParms dcBlack,"Times New Roman","Bold",90+i,8,21,0,0 dcCreateText -40+33*ca,100+33*sa,0,i end if next i Dim decl(366) as Double for count=1 to 365 w=.017202792*(count-(cm-15)/360) decl(count)=.367402-23.275*cos(w+.178044)-.38506*cos(2*w+.0687076)-.16046*cos(3*w+.451301)+.00315469*cos(4*w+.876643) next count decl(366)=decl(1) Dim mon(13) as String mon( 1) = "J" mon( 2) = "F" mon( 3) = "M" mon( 4) = "A" mon( 5) = "M" mon( 6) = "J" mon( 7) = "J" mon( 8) = "A" mon( 9) = "S" mon(10) = "O" mon(11) = "N" mon(12) = "D" mon(13) = "J" for i=1 to 17 a=decl(ind(i))*d2r b=70*Tan(a) if i+2=Int((i+2)/3)*3 then dcCreateLine b,-10,b,-16 dcSetTextParms dcBlack,"Times New Roman","Bold",0,15,21,0,0 dcCreateText 70*Tan(decl(ind(i)+15)*d2r),-20,0,mon((i+2)/3) dcSetTextParms dcBlack,"Times New Roman","Bold",0,6,21,0,0 dcCreateText 70*Tan(decl(ind(i))*d2r),-18,0,"1" end if if i=Int(i/3)*3 then dcCreateLine b,-10,b,-13 dcSetTextParms dcBlack,"Times New Roman","Bold",0,6,21,0,0 dcCreateText 70*Tan(decl(ind(i))*d2r),-15,0,"21" end if if i+1=Int((i+1)/3)*3 then dcCreateLine b,-10,b,-13 dcSetTextParms dcBlack,"Times New Roman","Bold",0,6,21,0,0 dcCreateText 70*Tan(decl(ind(i))*d2r),-15,0,"11" end if next i dcSetTextParms dcBlack,"Times New Roman","Bold",-90,12,21,0,0 a=decl(354)*d2r b=70*Tan(a) dcCreateLine b,10,b,20 dcCreateLine b,-10,b,-20 dcCreateText 70*Tan(decl(354)*d2r),32,0,"21 DEC" dcCreateText 70*Tan(decl(354)*d2r),-32,0,"21 DEC" a=decl(172)*d2r b=70*Tan(a) dcCreateLine b,10,b,20 dcCreateLine b,-10,b,-20 dcCreateText 70*Tan(decl(172)*d2r),32,0,"21 JUN" dcCreateText 70*Tan(decl(172)*d2r),-32,0,"21 JUN" a=decl(80)*d2r b=70*Tan(a) dcCreateText 70*Tan(decl(80)*d2r),-32,0,"21 MAR" a=decl(264)*d2r b=70*Tan(a) dcCreateText 70*Tan(decl(264)*d2r),32,0,"21 SEP" for i=19 to 35 a=decl(ind(i))*d2r b=70*Tan(a) if i+2=Int((i+2)/3)*3 then dcCreateLine b,10,b,16 dcSetTextParms dcBlack,"Times New Roman","Bold",180,15,21,0,0 dcCreateText 70*Tan(decl(ind(i)+15)*d2r),20,0,mon((i+2)/3) dcSetTextParms dcBlack,"Times New Roman","Bold",180,6,21,0,0 dcCreateText 70*Tan(decl(ind(i))*d2r),18,0,"1" end if if i=Int(i/3)*3 then dcCreateLine b,10,b,13 dcSetTextParms dcBlack,"Times New Roman","Bold",180,6,21,0,0 dcCreateText 70*Tan(decl(ind(i))*d2r),15,0,"21" end if if i+1=Int((i+1)/3)*3 then dcCreateLine b,10,b,13 dcSetTextParms dcBlack,"Times New Roman","Bold",180,6,21,0,0 dcCreateText 70*Tan(decl(ind(i))*d2r),15,0,"11" end if next i End Sub '''''''''''''''''''''''''''''''''' Sub Sundial dcSetCircleParms dcBlack,dcSolid,dcThin dcCreateCircleEx 0,80,40,80,-40,80,40,40,180,0 dcCreateCircleEx 0,80,-80,80,80,80,80,80,180,0 dcCreateCircleEx 0,-80,80,-80,-80,-80,80,80,180,0 dcCreateCircleEx 65,130,25,130,105,130,40,40,180,0 dcCreateCircleEx 105,10,105,50,65,10,40,40,90,0 dcCreateCircleEx -105,10,-65,10,-105,50,40,40,90,0 dcCreateCircleEx -65,140,-105,140,-25,140,40,40,180,0 dcSetLineParms dcBlack,dcSolid,dcThin dcCreateLine -105,140,-25,140 dcCreateLine -65,140,-65,135 dcCreateLine -65,100,-65,105 dcCreateLine 25,130,25,148.5 dcCreateLine 64.5,130,64.5,90 dcCreateLine 65.5,130,65.5,90 dcCreateLine 65.5,130,64.5,130 dcCreateLine 105,130,103,130 dcCreateLine 25,130,27,130 dcCreateLine 105,-30,65,-30 dcCreateLine 65,-30,65,10 dcCreateLine 105,10,100,10 dcCreateLine -105,-30,-65,-30 dcCreateLine -65,-30,-65,10 dcCreateLine -105,10,-100,10 dcCreateLine .5,80,.5,120 dcCreateLine -.5,80,-.5,120 dcCreateLine -.5,80,.5,80 dcCreateLine 80,80,40,80 dcCreateLine -80,80,-40,80 dcCreateLine -105,-120,105,-120 dcCreateLine 105,-80,40,-80 dcCreateLine -105,-80,-40,-80 dcSetLineParms dcBlack,dcStitch,dcThin dcCreateLine -40,-80,40,-80 dcCreateLine 80,-80,80,-120 dcCreateLine -80,-80,-80,-120 dcCreateLine 80,-80,80,-120 dcSetLineParms dcBlack,dcCutting,dcThin dcCreateLine 40,-80,40,-120 dcCreateLine -40,-80,-40,-120 for count=1 to 365 w=.017202792*(count-(cm-15)/360) eot(count)=.00884207-7.36034*cos(w+1.49487)+9.91068*cos(2*w-1.21808)-.306344*cos(3*w+1.82055)+.204774*Cos(4*w-.875115) next count eot(366)=eot(1) dcSetTextParms dcBlack,"Times New Roman","Bold",0,10,21,0,0 dcSetLineParms dcBlack,dcSolid,dcNormal for i=-20 to 20 step 5 dcCreateLine -39.7,-55+i,40,-55+i if abs(i)<19 then dcCreateText -43,-55+i,0,CStr(i) next i for i=1 to 37 step 3 dcCreateLine -40+ind(i)*80/365,-75,-40+ind(i)*80/365,-35 if i<36 then dcSetTextParms dcBlack,"Times New Roman","Bold",0,10,21,0,0 dcCreateText -40+(ind(i)+15)*80/365,-32,0,mon((i+2)/3) dcSetTextParms dcBlack,"Times New Roman","Bold",90,6,21,0,0 dcCreateText -40+ind(i)*80/365,-77,0,"1" dcCreateText -40+(ind(i)+10)*80/365,-77,0,"11" dcCreateText -40+(ind(i)+20)*80/365,-77,0,"21" end if next i dcSetTextParms dcBlack,"Times New Roman","Bold",0,10,21,0,0 dcCreateText 0,-18,0,"For Daylight Savings Time ADD ONE HOUR" dcCreateLine 40,-55,45,-55 dcCreateText 0,-27,0,"Equation of Time (min)" dcCreateText 45,-50,0,"Add" dcCreateText 48,-60,0,"Subtract" dcCreateText 47,-55,0,"0" dcSetLineParms dcBlack,dcSolid,dcThin for i=-20 to 20 step 1 dcCreateLine -39.7,-55+i,40,-55+i next i for i=1 to 37 dcCreateLine -40+ind(i)*80/365,-75,-40+ind(i)*80/365,-35 next i dcSetSplineParms dcBlack,dcSolid,dcNormal for i=1 to 365 step 2 spl(i)=-40+i*80/365 spl(i+1)=-55+eot(i) next i dcCreateSpline spl(1),182,False dcCreateText 0,-115,0,"Longitude Correction" dcSetTextParms dcBlack,"Times New Roman","Bold",0,10,21,0,0 dcCreateText 0,-85,0,"Central Meridian of the Time Zone" dcCreateText -20,-90,0,"To West" dcCreateText 20,-90,0,"To East" dcCreateText 0,-90,0,"Degrees" dcCreateText 0,-110,0,"Minutes" dcCreateText -20,-110,0,"Add" dcCreateText 20,-110,0,"Subtract" dcCreateLine 0,-85,0,-115 dcCreateLine -37.5,-100,37.5,-100 dcSetTextParms dcBlack,"Times New Roman","Bold",0,7,21,0,0 for i=-7.5 to 7.5 step .5 dcCreateLine 5*i,-98,5*i,-102 if i=Int(i) then dcCreateLine 5*i,-96,5*i,-104 dcCreateText 5*i,-94,0,CStr(abs(i)) dcCreateText 5*i,-106,0,CStr(-4*i) end if next i dcSetTextParms dcBlack,"Times New Roman","Bold",180,15,21,0,0 dcCreateText 0,40,0,"Local Time" dcSetTextParms dcBlack,"Times New Roman","Bold",180,10,21,0,0 dcCreateText 43,55,0,"READ THE HOURS FOR" dcCreateText 4,52,0,"NORTHERN" dcCreateText 4,58,0,"SOUTHERN" dcCreateText -22,55,0,"LATITUDES" dcCreateText -45,52,0,"OUTSIDE" dcCreateText -45,58,0,"INSIDE" for i=73 to 215 ha=90-i*5/4 sa=sin(ha*d2r) ca=cos(ha*d2r) dcCreateLine 80*ca,80+80*sa,79*ca,80+79*sa next i for i=1 to 71 ha=90-i*5/4 sa=sin(ha*d2r) ca=cos(ha*d2r) dcCreateLine 40*ca,80+40*sa,39*ca,80+39*sa next i for i=217 to 287 ha=90-i*5/4 sa=sin(ha*d2r) ca=cos(ha*d2r) dcCreateLine 40*ca,80+40*sa,39*ca,80+39*sa next i for i=24 to 72 ha=90-i*15/4 sa=sin(ha*d2r) ca=cos(ha*d2r) dcCreateLine 80*ca,80+80*sa,78*ca,80+78*sa if i/2=Int(i/2) then dcCreateLine 80*ca,80+80*sa,76*ca,80+76*sa end if if i/4=Int(i/4) and i/4>6 and i/4<18 then dcCreateLine 80*ca,80+80*sa,74*ca,80+74*sa dcSetTextParms dcBlack,"Times New Roman","Bold",-90+ha,12,21,0,0 dcCreateText 70*ca,80+70*sa,0,CStr(Int(i/4)) dcCreateText 65*ca,80+65*sa,0,CStr(24-Int(i/4)) end if next i for i=1 to 24 ha=90-i*15/4 sa=sin(ha*d2r) ca=cos(ha*d2r) dcCreateLine 40*ca,80+40*sa,38*ca,80+38*sa if i/2=Int(i/2) then dcCreateLine 40*ca,80+40*sa,36*ca,80+36*sa end if if i/4=Int(i/4) and i/4>0 then dcCreateLine 40*ca,80+40*sa,34*ca,80+34*sa dcSetTextParms dcBlack,"Times New Roman","Bold",-90+ha,12,21,0,0 dcCreateText 30*ca,80+30*sa,0,CStr(Int(i/4)) dcCreateText 25*ca,80+25*sa,0,CStr(24-Int(i/4)) end if next i for i=72 to 95 ha=90-i*15/4 sa=sin(ha*d2r) ca=cos(ha*d2r) dcCreateLine 40*ca,80+40*sa,38*ca,80+38*sa if i/2=Int(i/2) then dcCreateLine 40*ca,80+40*sa,36*ca,80+36*sa end if if i/4=Int(i/4) and i/4<24 then dcCreateLine 40*ca,80+40*sa,34*ca,80+34*sa dcSetTextParms dcBlack,"Times New Roman","Bold",-90+ha,12,21,0,0 dcCreateText 30*ca,80+30*sa,0,CStr(Int(i/4)) dcCreateText 25*ca,80+25*sa,0,CStr(24-Int(i/4)) end if next i for i=5 to 90 step 5 sa=sin(i*d2r) ca=cos(i*d2r) dcCreateLine 105-37*sa,10+37*ca,105-40*sa,10+40*ca dcCreateLine -105+37*sa,10+37*ca,-105+40*sa,10+40*ca if i=Int(i/15)*15 then dcCreateLine 105-35*sa,10+35*ca,105-40*sa,10+40*ca dcCreateLine -105+35*sa,10+35*ca,-105+40*sa,10+40*ca dcSetTextParms dcBlack,"Times New Roman","Bold",i,8,21,0,0 dcCreateText 105-33*sa,10+33*ca,0,i dcSetTextParms dcBlack,"Times New Roman","Bold",0-i,8,21,0,0 dcCreateText -105+33*sa,10+33*ca,0,i end if next i End Sub