Bullet Design

January 23, 2015 2:01 am

My interest in bullet designs started with my interest in accurate benchrest type shooting, primarily at 100 and 200 yards but also on occasion out to 300 yards. And later it deepened as I became involved with 1000 yard target shooting with .30 and .338 caliber magnums and the 50 BMG round. Although for the most part I still use bullets that are similar to the 6mm jacketed hollow point bullets I used in benchrest competition in the 1970’s, I’ve experimented with many different shapes and weights since then. And with the larger calibers used for long-range shooting there has been even more experimentation. I’ve owned several sets of carbide bullet dies and made my own jacketed hollow points in .224″ and .243″ diameters. In the .30’s, .338’s and .50’s I’ve experimented with lathe-turned special designs made from various materials including steel, brass, bronze and copper.

Here are several experimental bullets from a little .172 caliber to a .50 BMG bullet made from bronze, steel and conventional jacketed/lead core types. The target is a respectable 200 yard 5-shot Light Varmint benchrest target fired by a Lilja barreled 6 PPC at the 2000 Cactus Classic.
Here are several experimental bullets from a little .172 caliber to a .50 BMG bullet made from bronze, steel and conventional jacketed/lead core types. The target is a respectable 200 yard 5-shot Light Varmint benchrest target fired by a Lilja barreled 6 PPC at the 2000 Cactus Classic.

So what is the reason for experimenting with new designs? Well, there are several. For me the primary impetus has been a search for greater accuracy, often combined with a bullet that bucked the wind better than a bullet of equal weight. Others however have done the same for obscure calibers or hoped for improved performance on game. Some materials seem to foul less than others and this too is a good reason for experimentation.

There are two usual paths in experimenting with a new bullet design. As with my own experience, jacketed/lead core bullets can be made by the at-home bullet maker with dies in a heavy-duty handloader’s press, much like reloading dies. Or the second easy option is to have a design turned from solid stock on a CNC lathe. There are limitations with each method. But the best way to take a “look” at a specific design is with a computer model long before any bullets are made. With the right software a designer can determine the new bullet’s ballistic coeficcient, weight, and stability. Knowing these values ahead of time is a great time and money saver.

For example, I wanted to have a 6mm diameter bullet of about 68 grains in weight that had a ballistic coefficient higher than the conventional 68 grain flat base jacketed hollow point bullets used by many benchrest shooters. Bullets like these have a C1 ballistic coefficient of about .265. My goal was a bullet of .350 or higher, one that would reduce drift in the wind. Benchrest matches are won by the fellow that makes the fewest mistakes, not by the nimrod that shoots the smallest group. One small group mixed into a medicore aggregate is still going to produce a so-so agg. Reducing the wind judgement errors I make, especially at 200 yards, was my goal. I knew that making a more streamlined bullet was the way to achieve these results. I started with the .900″ long bullet jacket offered by J-4. By adding a boattail and a longer nose with a smaller meplat I was able to achieve this. I entered into the computer program many different values for ogive radii, boattail lengths and angles as well as meplat diameters. I looked at tangent ogives and seacant types. For best accuracy I didn’t want to use a twist rate faster than a 12″ and stability concerns were important too. After a lot of number crunching I settled on a design and had a set of carbide dies made by Bob Simonson. I made bullets with these dies for several years and later sold the dies to Walt Berger who now offers a similar bullet.

At the end of this article is a listing of the computer program I, in part, developed to help with this new bullet and many others, including the some for the big calibers. This program is a combination of several programs. Incorporated is the bullet weight calculation program we have listed on this web site as well as two that were developed by Bill Davis of Tioga Engineering and Bob McCoy of Aberdeen Proving Ground. These last two were the result of Mr. McCoy’s work in measuring drag functions and ballistic coefficients and stability. These are the real keys to the program. Additionally the program also has a simple exterior ballistics sequence that computes wind drift for 100, 200, and 300 yards. My contribution was putting these different elements together and the weight calculation portion. The program also allows the user to very easily make changes to a bullet without starting completely over. For example, the meplat diameter can be changed and the effects on ballistic coefficient, weight, and bearing length are readily seen.

The program will prompt the user for some basic physical dimensions for the proposed bullet such as caliber, overall length, specific gravity or bullet type (ie. hollow point, soft point, etc.), ogive shape and type (tangent or seacant), meplat diameter, the presence or lack of a boattail, design muzzle velocity, and the desired twist rate. The program will then calculate for the user the C1 and C7 ballistic cofficients, and the stability factor for the given twist rate and the twist rate required for a stability factor of 1.5 at a seal-level atmosphere. It aslo calculates sectional density, weight, and some physical characteristics that were not prompted such as the location of the ogive origin, center-of-gravity, bearing length. The weight can be entered by the user or the program will calculate it.

There is some very complex math involved in computing these numbers. Without a computer it would be impossible to generate them. In fact, the very first computers were developed to calculate ballistic information for the military. We’re very grateful to Bill Davis and Bob McCoy for sharing these with us and for granting permission to diseminate it on the web. Readers are free to use this information as they please, as long as it is for non-commercial gain. To the best of my knowledge there is no other source for these alogorithms outside of some extremely expensive commercial software.

I’ve found that the numbers generated by the program are very accurate. I have used the dual chronograph method of calculating ballistic coefficients and compared them to the values the program produced. Without exception the two were very, very close. In fact, I’ve also measured bullets and then entered the physical dimensions into the program to find out what the ballistic coefficients of existing bullets really are and what twist rate they require.

As with several of the other codes we’ve posted on the web, they are brought into the article from a DOS program in GWBASIC after scanning a printed copy. This results in a few errors, such as the number zero interpreted as the letter O and the number 1 looking like the lower case letter L. Hopefully these have all been edited out and that it is all clean code. Although I have not used it, I understand that Microsoft has a new version of BASIC called Visual BASIC and that little conversion is necessary. This would give the user a Windows based program rather than the old DOS type that GWBASIC is. There are 481 lines of code.

New April 2003 this following program is available as a free download as an Excel file.

10 CLS:PRINT” CODE ‘BDESIGN’ ** WRITTEN BY DANIEL LILJA OCTOBER 28 1989″
20 PRINT”THIS PROGRAM WILL HELP DESIGN SPITZER SHAPE JACKETED RIFLE BULLETS OF”
30 PRINT”CONVENTIONAL LEAD CORE CONSTRUCTION OR MONOLITHIC SOLID TYPE BULLETS.”
40 PRINT”THE PROGRAM WILL ASK FOR BULLET DIMENSIONS, TYPE OF CONSTRUCTION AND WEIGHT.”:PRINT””
50 PRINT”THE APPROXIMATE LOCATION OF THE CENTER OF GRAVITY WILL BE CALCULATED.”
60 PRINT”IF THE BULLET WEIGHT IS NOT KNOWN THE PROGRAM WILL CALCULATE AN ACCURATE”
70 PRINT”APPROXIMATION FROM THE ABOVE INFORMATION. THE PROGRAM WILL ALSO ASK FOR THE”
80 PRINT”DESIGN MUZZLE VELOCITY OF THE BULLET. THE VELOCITY WILL BE USED IN CALCULATING”
90 PRINT”C1 AND C7 BALLISTIC COEFFICIENTS AND THE CORRECT BARREL TWIST RATE FOR A”
100 PRINT”GYROSCOPIC BULLET STABILITY FACTOR OF 1.5. THE BALLISTIC COEFFICIENT AND”
110 PRINT”STABILITY CALCULATIONS ARE BASED ON EITHER A STANDARD METRO OR ‘ICAO’SEA LEVEL”
120 PRINT”ATMOSPHERE. APPROXIMATE WIND DRIFT FOR A 10 MPH WIND WILL BE CALCULATED FOR”
130 PRINT”100, 200, AND 300 YARD RANGES.”:PRINT””
140 PRINT”THE BALLISTIC COEFFICIENT AND STABILITY PROGRAMMING ARE BASED ON PROGRAMS”
150 PRINT”WRITTEN BY BILL DAVIS FROM RESEARCH DONE BY BOB MCCOY AT ABERDEEN PROVING”
160 PRINT”GROUND. THE WIND DRIFT CALCULATIONS ARE FROM ‘KARPOV’ BY BILL DAVIS.”
170 PRINT””:PRINT”PRESS <ENTER> WHEN READY TO CONTINUE”
180 INPUT WR
190 IF WR>=0 THEN CLS:GOTO 200
200 PRINT””:PRINT”WHAT NEXT?”
210 PRINT” 1=CONTINUE WITH BULLET DESIGN”
220 PRINT” 2=REVIEW COMMENTS ON BULLET DESIGN”
230 PRINT” 3=END PROGRAM”
240 PRINT””
250 INPUT QWN
260 IF QWN=1 THEN CLEAR:CLS:GOTO 300
270 IF QWN=2 THEN GOTO 4260
280 IF QWN=3 THEN CLS:CLEAR:RUN”MENU.BAS”
290 IF QWN>3 THEN PRINT”TRY AGAIN”:GOTO 200
300 PRINT””
310 DEFDBL A-Z
320 INPUT”ENTER BULLET IDENTIFICATION OR TITLE FOR PRINTOUT:”;B$
330 INPUT”ENTER BULLET DIAMETER (INCHES):”;BD
340 INPUT”ENTER BULLET OVERALL LENGTH (INCHES):”;BL
350 INPUT”ENTER MEPLAT DIAMETER (INCHES):”;MD
360 INPUT”DOES THIS BULLET HAVE A BOATTAIL (1=YES 2=NO).”‘;QBT
370 IF QBT>1 THEN GOTO 430
380 INPUT”ENTER BOATTAIL LENGTH (INCHES):”;BTL
390 INPUT”WHICH WILL YOU ENTER (1=BOATTAIL ANGLE 2=END DIAMETER):”;QED
400 IF QED=1 THEN INPUT”ENTER BOATTAIL ANGLE (DEGREES):”;BTA
410 IF QED=2 THEN INPUT”ENTER BOATTAIL END DIAMETER (INCHES):”;ED
420 IF QED>2 THEN PRINT”TRY AGAIN”:GOTO 390
430 INPUT”WHAT TYPE OF OGIVE DOES THIS BULLET HAVE (1=TANGENT 2=SECANT):”;QR
440 IF QR=2 THEN PRINT”PRESS <ENTER> IF YOU WANT THE SECANT OGIVE LENGTH CALCULATED OR,”:INPUT”ENTER THE AXIAL LENGTH OF THE OGIVE (INCHES):”;SNL:NL=SNL
450 INPUT”ENTER THE OGIVE RADIUS (CALIBERS):”;RC
460 PRINT”ENTER THE TYPE OF BULLET CONSTRUCTION:”
470 PRINT” 1=LEAD CORE, SOFT SWAGED JACKETED HOLLOW POINT”
480 PRINT” 2=LEAD CORE, JACKETED SOFT POINT OR FMJ”
490 PRINT” 3=STEEL CORE, JACKETED FMJ”
500 PRINT” 4=NONE OF THE ABOVE”
510 INPUT QBC
520 IF QBC=1 AND BL>=1.25 THEN SG=10.11:GOTO 570
530 IF QBC=1 AND BL<1.25 THEN SG=10:GOTO 570
540 IF QBC=2 THEN SG=10.25:GOTO 570
550 IF QBC=3 THEN SG=9.899999:G0TO 570
560 IF QBC=4 THEN INPUT”ENTER THE SPECIFIC GRAVITY OF THE MATERIAL”;SG
570 PRINT”IF KNOWN YOU MAY ENTER THE WEIGHT OF THE BULLET OR THE PROGRAM WILL CALCULATE”
580 PRINT”AN APPROXIMATE WEIGHT DEPENDING ON THE TYPE OF BULLET CONSTRUCTION AND SHAPE”:PRINT””
590 INPUT”ENTER THE BULLET WEIGHT IN GRAINS OR PRESS <ENTER> IF YOU WANT IT CALCULATED”;QW
600 INPUT”ENTER THE DESIGN MUZZLE VELOCITY OF THIS BULLET (FPS):”;V
610 PRINT”WHICH SEA LEVEL ATMOSPHERE DO YOU WANT THE BC AND STABILITY DATA BASED?”
620 INPUT” 1=STANDARD METRO 2=’ICAO'”;QATM
630 REM BEGIN CALCULATIONS
640 IF QR=2 AND NL=0 THEN DIFRAD=(BD-MD)/2:RT=RC*.533*BD:NLT=SQR(RT*2*DIFRAD-DIFRAD^2):NL=NLT
650 IF QR=1 THEN GOSUB 800:REM CALC X-Y COORD FOR TANGENT OGIVE
660 IF QR=2 THEN GOSUB 900:REM COMPUTE X-Y COORD FOR SECANT OGIVE
670 IF QW>0 THEN W=QW
680 IF QBT=2 THEN GOTO 730
690 IF ED>0 THEN GOTO 710
700 ED=BD-2*(BTL*TAN(BTA/57.3))
710 BTA=57.3*ATN(((BD-ED)/2)/BTL):REM BT ANGLE FROM END DIA AND BT LENGTH
720 IF BTA=90 THEN BTA=0
730 IF QW=0 THEN GOSUB 1030:REM CALCULATE WEIGHT IN GRAINS
740 GOSUB 4450:REM COMPUTE CENTER OF GRAVITY
750 SD=W/(7000*BD^2):REM SECTIONAL DENSITY
760 GOSUB 2630:REM COMPUTE BALLISTIC COEFFICIENT
770 GOSUB 3800:REM COMPUTE STABILITY
780 GOSUB 4680:REM COMPUTE WIND DRIFT
790 GOTO 1580:REM PRINT ROUTINE
800 REM COMPUTE X-Y COORDINATES FOR TANGENT OGIVE
810 DIFRAD=(BD-MD)/2:difference in radii
820 R=RC*BD:REM OGIVE RADIUS IN INCHES
830 NL=SQR(R*2*DIFRAD-DIFRAD^2):REM FIND NOSE LENGTH
840 IF MC=8 THEN R=(NL^2+DIFRAD^2)/(2*DIFRAD):RC=R/BD
850 IF QBT=2 THEN BTL=0
860 LB=BL-NL-BTL:REM CALC LENGTH OF BEARING
870 XC=BL-NL:REM FIND X COORD OF OGIVE RADIUS CENTER FROM BASE
880 YC=-1*(R-.5*BD):REM FIND Y COORD OF OGIVE RADIUS CENTER FROM CENTRAL AXIS
890 RETURN
900 REM COMPUTE X-Y COORD FOR SECANT OGIVE
910 R=RC*BD:REM FIND OGIVE RADIUS IN INCHES
920 C=(BD-MD)/2:REM SIDE A OF RIGHT TRIANGLE IN OGIVE
930 HYP=SQR(NL^2+C^2):REM HYPOTENUSE OF TRIANGLE IN OGIVE
940 H=R-.5*SQR(4*R^2-HYP^2):REM HEIGHT OF CIRCULAR SEGMENT
950 A=ATN(C/NL):REM FIND ANGLE OF OGIVE SLOPE
960 HX=H/COS(A):REM HYPOTENUSE OF RIGHT TRIANGLE IN CIRCULAR SEGMENT
970 X=R*SIN(A):REM FIND AXIAL LENGTH OF X COORD FROM MIDPOINT OF OGIVE CHORD
980 B=SQR(R^2-X^2):REM FIND LENGTH OF Y COORD
990 YC=-1*(B-HX-(BD+MD)/4):REM FIND Y COORD FOR OGIVE RADIUS CENTER BELOW AXIS
1000 XC=BL-(NL/2+X):REM FIND X COORD FOR OGIVE RADIUS CENTER AHEAD OF BASE
1010 LB=BL-NL-BTL:REM CALC LENGTH OF BEARING
1020 RETURN
1030 REM:CALCULATE WEIGHTS AND VOLUMES
1040 IF QBT=2 THEN GOTO 1140
1050 REM CALCULATE VOLUME AND WEIGHT FOR BOATTAIL BULLET
1060 LB=BL-NL-BTL:REM CALC BEARING LENGTH
1070 LBV=.7854*BD^2*LB:REM CALC VOLUME OF BEARING LENGTH
1080 BTV=.2618*BTL*(BD^2+BD*ED+ED^2):REM CALC BOATTAIL VOLUME
1090 GOSUB 1210:REM CALC VOLUME OF OGIVE
1100 VV=LBV+BTV+OGV:REM ADD VOLUMES OF BEARING LENGTH, BOATTAIL LENGTH, AND OGIVE
1110 IF QW>0 THEN RETURN:REM SEE LINE 4520
1120 W=(VV*SG*252.7):REM CALC WEIGHT IN GRAINS (252.7 GRAINS / CUBIC INCH)
1130 RETURN
1140 REM COMPUTE VOLUME AND WEIGHT FOR FLAT BASE BULLET
1150 LB=BL-NL:REM CALC BEARING LENGTH
1160 LBV=.7854*BD^2*LB:REM CALC BEARING LENGTH VOLUME
1170 GOSUB 1210:REM CALC OGIVE VOLUME
1180 VV=LBV+OGV:REM ADD VOLUMES OF BEARING LENGTH AND OGIVE
1190 W=(VV*SG*252.7):REM CALC WEIGHT IN GRAINS
1200 RETURN
1210 REM CALCULATE VOLUME OF OGIVE,CALCULUS ROUTINE
1220 IF QR=1 THEN XSEC=0:GOTO 1240
1230 IF QR=2 THEN XSEC=BL-NL-XC:REM DISTANCE FROM OGIVE RADIUS ORIGIN TO JUNCTION OF OGIVE AND BEARING CYLINDER ON X AXIS FOR SECANT OGIVE ONLY
1240 PI=3.1415927#
1250 X=NL/10
1260 AX=X/2+XSEC:REM START FIRST DISC AT ONE HALF OF THICKNESS
1270 BX=AX+X
1280 CX=BX+X
1290 DX=CX+X
1300 EX=DX+X
1310 FX=EX+X
1320 GX=FX+X
1330 HX=GX+X
1340 IX=HX+X
1350 JX=IX+X
1360 AY=SQR(R^2-AX^2)+YC:REM EQUATION OF CIRCLE IS X^2 + Y^2 =R^2
1370 BY=SQR(R^2-BX^2)+YC
1380 CY=SQR(R^2-CX^2)+YC
1390 DY=SQR(R^2-DX^2)+YC
1400 EY=SQR(R^2-EX^2)+YC
1410 FY=SQR(R^2-FX^2)+YC
1420 GY=SQR(R^2-GX^2)+YC
1430 HY=SQR(R^2-HX^2)+YC
1440 IY=SQR(R^2-IX^2)+YC
1450 JY=SQR(R^2-JX^2)+YC
1460 AV=PI*X*AY^2:REM COMPUTE VOLUME FOR EACH DISC
1470 BV=PI*X*BY^2
1480 CV=PI*X*CY^2
1490 DV=PI*X*DY^2
1500 EV=PI*X*EY^2
1510 FV=PI*X*FY^2
1520 GV=PI*X*GY^2
1530 HV=PI*X*HY^2
1540 IV=PI*X*IY^2
1550 JV=PI*X*JY^2
1560 OGV=AV+BV+CV+DV+EV+FV+GV+HV+IV+JV
1570 RETURN
1580 PRINT””:PRINT””:IF LB<=0 THEN PRINT “EITHER THE OGIVE OR THE BOATTAIL LENGTH IS TOO LONG ON THIS BULLET, TRY AGAIN”:GOTO 200
1590 CLS:PRINT””:PRINT” *** BULLET DESIGN PROFILE FOR “;B$;” ***”
1600 PRINT”DATA FOR PHYSICAL MEASURNENTS, WEIGHT, SECTIONAL DENSITY, CENTER OF GRAVITY,”
1610 PRINT TAB(14)”BALLISTIC COEFFICIENT, AND GYROSCOPIC STABILITY”:PRINT””
1620 IF QBC=1 THEN PRINT”LEAD CORE, JACKETED HP”;:GOTO 1660
1630 IF QBC=2 THEN PRINT”LEAD CORE, JACKETED SP OR FMJ”;:GOTO1660
1640 IF QBC=3 THEN PRINT”STEEL CORE, FMJ”;:GOTO 1660
1650 IF QBC=4 THEN PRINT”MONOLITHIC SOLID SG=”;SG;:GOTO 1660
1660 PRINT TAB(38);”OGIVE RADIUS (CALIBERS):”;:PRINT USING”##.#”;RC
1670 PRINT”BULLET DIAMETER (INCHES):”;BD;:PRINT TAB(38);”CENTER FOR OGIVE RADIUS (INCHES):
1680 PRINT”BULLET LENGTH (INCHES):”;:PRINT USING”#.###”;BL;:PRINT TAB(41);”AHEAD OF BASE:”;:PRINT USING” .###”;XC
1690 IF QBT=1 THEN PRINT”BOATTAIL LENGTH (INCHES):”;BTL;
1700 IF QBT=2 THEN PRINT”BOATTAIL LENGTH (INCHES): NONE”;
1710 PRINT TAB(41);”BELOW AXIS:”;:PRINT USING” ##.###”;YC
1720 PRINT”BOATTAIL LENGTH (% OF CAL):”;:PRINT USING “#.##”;BTL/BD;:PRINT TAB(38);”APPROX CENTER OF GRAVITY (INCHES):”
1730 PRINT”BOATTATL END DIA. (INCHES):”;:PRINT USING ” .###”;ED;:PRINT TAB(41);”AHEAD OF BASE:”;:PRINT USING” #.###”;CG
1740 PRINT”BOATTAIL ANGLE (DEGREES):”;:PRINT USING”##.#”;BTA;: PRINT TAB(38); “SECTIONAL DENSITY: “;:PRINT USING”.###”;SD
1750 IF QATM=2 THEN PRINT”BEARING LENGTH (INCHES):”;:PRINT USING” .###”;LB;: PRINT TAB(38);”BALLISTIC COEFFICIENT AT ‘ICAO’ SL:”:GC)TO 1770
1760 PRINT”BEARING LENGTH (INCHES):”;:PRINT USING” .###”;LB;:PRINT TAB(38); “BALLISTIC COEFFICIENT AT STD METRO SL:”
1770 PRINT”BEARING LENGTH (% OF CAL):”;:PRINT USING”#.##”;LB/BD;:PRINT TAB(38);” C1= “;:PRINT USING”.###”;C1;:PRINT” C7= “;:PRINT USING”.###”;C7;:PRINT” AT”; V;”FPS”
1780 IF QW=0 THEN PRINT”OGIVE LENGTH (INCHES):”;:PRINT USING” #.###”;NL;:PRINT TAB(38);”APPROX WEIGHT (GRAINS):”;.PRINT USING”###”;W:(GOTO 1800
1790 PRINT”OGIVE LENGTH (INCHES):”;:PRINT USING” #.###”;NL;:PRINT TAB(38);”WEIGHT (GRAINS):”;W
1800 PRINT”OGIVE LENGTH (% OF CAL):”;:PRINT USING”#.###;NL/BD;:PRINT TAB(38); “SPECIFIC GRAVITY:”;:PRINT USING ” ##.##”;SG
1810 PRINT”OGIVE RADIUS (INCHES):”;:PRINT USING” #.###”;R;:PRINT TAB(38)”TWIST RATE FOR STABILITY FACTOR OF 1.5:”
1820 IF QR=1 THEN PRINT”OGIVE TYPE: TANGENT”;:PRINT TAB(41)USING”##.#”;NINCH15; :PRINT” (INCHES/TURN)”:GOTO 1840
1830 PRINT”OGIVE TYPE: SECANT”;:PRINT TAB(41) USING”##.#”;NINCH15;:PRINT” (INCHES/TURN)”
1840 IF QATM=2 THEN PRINT”MEPLAT DIAMETER (INCHES):”;MD;:PRINT TAB(41)”AT”;V”FPS MUZZLE AND ‘ICAO’ SL”:GOTO 1880
1850 PRINT”MEPLAT DIAMETER (INCHES):”;:PRINT USING”.###”;MD;:PRINT TAB(41)”AT”;V “FPS MUZZLE AND STD METRO SL”
1860 PRINT TAB(38)”APPROX WIND DRIFT PER 10 MPH (INCHES):”
1870 PRINT TAB(41)”100 YDS “;:PRINT USING”##.#”;WD1;:PRINT” 200 YDS “;:PRINT USING”##.#”;WD2;:PRINT” 300 YDS “;:PRINT USING”##.#”;WD3
1880 PRINT””:PRINT”WHAT NEXT?”
1890 PRINT”1=DESIGN NEW BULLET 2=CHANGE THIS DESIGN 3=PRINT HARD COPY 4=END PROGRAM”
1900 INPUT QWX
1910 IF QWX=1 THEN CLEAR:CLS:GOTO 300
1920 IF QWX=2 THEN GOTO 1960
1930 IF QWX=3 THEN GOTO 2310
1940 IF QWX=4 THEN CLEAR:CLS:RUN”MENU.BAS”
1950 IF QWX>4 THEN PRINT”TRY AGAIN”:GOTO 1880
1960 CLS:PRINT””:PRINT TAB(10)”YOU MAY MAKE CHANGES TO THE FOLLOWING DESIGN INPUTS:”:PRINT””
1970 PRINT TAB(20)” 1=CHANGE BULLET LENGTH”
1980 PRINT TAB(20)” 2=ADD BOATTAIL”
1990 PRINT TAB(20)” 3=CHANGE BOATTAIL LENGTH”
2000 PRINT TAB(20)” 4=CHANGE BOATTAIL ANGLE”
2010 PRINT TAB(20)” 5=CHANGE SECANT OGIVE LENGTH”
2020 PRINT TAB(20)” 6=CHANGE OGIVE RADIUS”
2030 PRINT TAB(20)” 7=CHANGE BULLET WEIGHT”
2040 PRINT TAB(20)” 8=CHANGE MEPLAT DIAMETER”
2050 PRINT TAB(20)” 9=CHANGE THE DESIGN MUZZLE VELOCITY”
2060 PRINT TAB(20)” 10=REMOVE BOATTAIL”
2070 PRINT TAB(20)” 11=EXIT THIS PROGRAM”
2080 PRINT””
2090 PRINT TAB(20)”ENTER THE NUMBER OF YOUR CHOICE:”
2100 INPUT MC
2110 IF MC=1 THEN INPUT”ENTER THE NEW BULLET LENGTH (INCHES):”;BL:GOTO 2220
2120 IF MC=2 THEN QBT=1:QED=1:INPUT”ENTER THE BOATTAIL LENGTH (INCHES):”;BTL:INPUT”ENTER THE BOATTAIL ANGLE (DEGREES):”;BTA:ED=0:GOTO 2220
2130 IF MC=3 THEN INPUT”ENTER NEW BOATTAIL LENGTH (INCHES):”;BTL:ED=0:GOTO 2220 2140 IF MC=4 THEN QED=1:INPUT”ENTER NEW BOATTAIL ANGLE (DEGREES):”;BTA:ED=0:GOTO 2220
2150 IF MC=5 THEN INPUT”ENTER THE NEW SECANT OGIVE LENGTH (INCHES):”;NL:GOTO 2220
2160 IF MC=6 THEN INPUT”ENTER THE NEW OGIVE RADIUS (CALIBERS):”;RC:IF QR=2 AND SNL=0 THEN INPUT”IF YOU WANT THE SECANT OGIVE LENGTH CALCULATED PRESS <ENTER> OR ENTER THE NEW LENGTH (INCHES):”;SNL:NL=SNL:GOTO 2220
2170 IF MC=7 THEN PRINT”IF YOU WANT THE WEIGHT TO BE CALCULATED BY THE PROGRAM PRESS <ENTER> OR,”:INPUT”ENTER THE NEW BULLET WEIGHT (GRAINS):”;QW:GOTO 2220
2180 IF MC=8 THEN INPUT”ENTER THE NEW MEPLAT DIAMETER (INCHES):”;MD:GOTO 2220 2190 IF MC=9 THEN INPUT”ENTER THE NEW MUZZLE VELOCITY (FPS):”;V
2200 IF MC=10 THEN PRINT”THE BOATTAIL HAS BEEN REMOVED”: QBT=2:QW=0:BTA=0:BTL=0:
GOTO 2220
2210 IF MC=11 THEN CLS:CLEAR:RUN “MENU.BAS”
2220 PRINTI””:PRINT”WHAT NEXT?”
2230 PRINT” 1=MAKE ANOTHER CHANGE”
2240 PRINT” 2=RUN CALCULATIONS”
2250 PRINT” 3=END THIS PROGRAM”
2260 INPUT QXX
2270 IF QXX>3 THEN COTO 2220
2280 IF QXX=1 THEN GOTO 1960
2290 IF QXX=2 THEN CLS:GOTO 630
2300 IF QXX=3 THEN CLEAR:CLS:RUN”MENU.BAS”
2310 REM LPRINT ROUTINE
2320 LPRINT””
2330 LPRINT””:LPRINT” BULLET DESIGN PROFILE FOR “;B$;”
2340 LPRINT TAB(4);”DATA FOR PHYSICAL MEASURMENTS, WEIGHT, SECTIONAL DENSITY, CENTER OF GRAVITY,”
2350 LPRINT TAB(18);”BALLISTIC COEFFICIENT, AND GYROSCOPIC STABILITY”:LPRINT” 2360 IF QBC=1 THEN LPRINT TAB(4);”LEAD CORE, JACKETED HP”;:GOTO 2400
2370 IF QBC=2 THEN LPRINT TAB(4);”LEAD CORE, JACKETED SP OR FMJ”;:GOTO 2400
2380 IF QBC=3 THEN LPRINT TAB(4);”STEEL CORE, FMJ”;:GOTO 2400
2390 IF QBC=4 THEN LPRINT TAB(4);”MONOLITHIC SOLID SG=”;SG;
2400 LPRINT TAB(38);”OGIVE RADIUS (CALIBERS):”;:LPRINT USING”##.#”;RC
2410 LPRINT TAB(4);”BULLET DIAMETER (INCHES):”BD;:LPRINT TAB(38);”CENTER FOR OGIVE RADIUS (INCHES):”
2420 LPRINT TAB(4);”BULLET LENGTH (INCHES):”;:LPRINT USING”#.###”;BL;:LPRINT TAB (41);”AHEAD OF BASE:”;:LPRINT USING” .###”;XC
2430 IF QBT=1 THEN LPRINT TAB(4);”BOATTAIL LENGTH (INCHES):”;BTL;
2440 IF QBT=2 THEN LPRINT TAB(4);”BOATTAIL LENGTH (INCHES): NONE”;
2450 LPRINT TAB(41);”BELOW AXIS:”;:LPRINT USING” ##.###”;YC
2460 LPRINT TAB(4);”BOATTAIL LENGTH (% OF CAL):”;:LPRINT USING”#.##”;BTL/BD;:LPR INT TAB(38);”APPROX CENTER OF GRAVITY (INCHES):”
2470 LPRINT TAB(4);”BOATTAIL END DIA (INCHES):”;:LPRINT USING ” .###”;ED;:LPRINT TAB(41);”AHEAD OF BASE:”;:LPRINT USING” #.###”;CG
2480 LPRINT TAB(4);”BOATTAIL ANGLE (DEGREES)”;:LPRINT USING “##.#”;BTA;:LPRINT TAB(38);”SECTIONAL DENSITY: “;:LPRINT USING “.###”;SD
2490 IF QATM=2 THEN LPRINT TAB(4)”BEARING LENGTH (INCHES):”;:LPRINT USING” .###” ;LB;:LPRINT TAB(38);”BALLISTIC COEFFICIENT AT ‘ICAO’ SL:”:GOTO 2510
2500 LPRINT TAB(4);”BEARING LENGTH (INCHES):”;:LPRINT USING” .###”;LB;:LPRINT TAB(36);”BALLISTIC COEFFICIENT AT STD METRO SL:”
2510 LPRINT TAB(4);”BEARING LENGTH (% OF CAL):”;:LPRINT USING”#.##”;LB/BD;: LPRINT TAB(38);” C1= “;:LPRINT USING”.###”;C1;:LPRINT” C7= “;:LPRINT USING”.###”;C7;:LPRINT” AT”;V;”FPS”
2520 IF QW=0 THEN LPRINT TAB(4);”OGIVE LENGTH (INCHES):”;,LPRINT USING” #.###”; NL;:LPRINT TAB(36);”APPROX WEIGHT (GRAINS):”;:LPRINT USING”###”;W:GOTO 2540
2530 LPRINT TAB(4);”OGIVE LENGTH (INCHES):”;:LPRINT USING” #.###”;NL;:LPRINT TAB (38);”WEIGHT (GRAINS):”;W
2540 LPRINT TAB(4);”OGIVE LENGTH (% OF CAL):”;:LPRINT USING”#.##”;NL/BD;:LPRINT TAB(38);”SPECIFIC GRAVITY”;:LPRINT USING” ##.##”;SG
2550 LPRINT TAB(4);”OGIVE RADIUS (INCHES):”;:LPRINT USING” #.###”;R;:LPRINT TAB(38);”TWIST RATE FOR STABILITY FACTOR OF 1.5:”
2560 IF QR=1 THEN LPRINT TAB(4);”OGIVE TYPE: TANGENT”;:LPRINT TAB(41) USING”##.# “;NINCH15;:LPRINT” (INCHES/TURN)”:GOTO 2580
2570 LPRINT TAB(4);”OGIVE TYPE: SECANT”;:LPRINT TAB(41); USING”##.#”;NINCH15;: LPRINT” (INCHES/TURN)”
2580 IF QATM=2 THEN LPRINT TAB(4)”MEPLAT DIAMETER (INCHES):”;MD;:LPRINT TAB(41)” AT”;V”FPS MUZZLE AND ‘ICAO’ SL”:GOTO 1880
2590 LPRINT TAB(4);”MEPLAT DIAMETER (INCHES):”;:LPRINT USING”#.###”;MD;:LPRINT TAB(41)”AT”;V”FPS MUZZLE AND STD METRO SL”
2600 LPRINT TAB(38)”APPROX. WIND DRIFT PER 10 MPH (INCHES):”
2610 LPRINT TAB(41)”100 YDS “;:LPRINT USING”##.#”;WD1;:LPRINT” 200 YDS “;: LPRINT USING”##.#”;WD2;:LPRINT” 300 YDS “;.,LPRINT USING”##.#”;WD3
2620 GOTO 1880
2630 REM COMPUTE BALLISTIC COEFFICIENT FROM MCDRGS2 BY BILL DAVIS AND BOB MCCOY
2640 DREF=BD*25.4:REM DIA IN MM
2650 LT=BL/BD:REM LENGTH IN CAL
2660 LN=NL/BD:RHM NOSE LENGTH IN CAL
2670 IF QBT=2 THEN LBT=0:ED=BD:DB=1:GOTO 2720
2680 LBT=BTL/BD:REM BT LENGTH IN CAL
2690 IF QED=2 THEN DB=ED/BD:GOTO 2720
2700 ED=BD-2*(BTL*TAN(BTA/57.3)):DB=ED/BD:GOTO 2720:REM BT END DIA IN CAL
2710 IF QED=1 THEN DB=ED/BD:REM BT END DIA IN CAL
2720 DM=MD/BD:REM MEPLAT DIA IN CAL
2730 DIFRAD=(BD-MD)/2:REM DIFFERENCE IN RADII, BD-MD
2740 R=BD*RC:REM RADIUS IN INCHES
2750 IF QR=1 THEN RTR=1
2760 RR=(NL^2+DIFRAD^2)/(2*DIFRAD)
2770 RTCAL=RR/BD:REM RADIUS OF TANGENT OGIVE IN CAL
2780 IF QR=2 THEN RTR=RTCAL/RC:REM SHAPE PARAMETER RATIO
2790 DBND=1:REM BAND DIA ONE CAL
2800 BLC$=”L/T”:REM FLOW OVER NOSE/BODY IS LAMINAR/TURBULENT FOR TURBULENT/TURBULENT CHANGE TO ‘BLC$=”T/T”
2810 DEFDBL A-Z
2820 M=V/1116.44
2830 TA=(1-DM)/LN
2840 M2=M^2
2850 RE=23296.3*M*LT*DREF
2860 RET=.4343*(LOG(RE))
2870 CFT=(.455/(RET^2.58))*((1+.21*M2)^(-.32))
2880 DUM=1+((.3333+(.02/(LN^2)))*RTR)
2890 SWN=1.5708*LN*DUM*(1+1/(8*(LN^2)))
2900 SWCYL=3.1416*(LT-LN)
2910 SW=SWN+SWCYL
2920 IF BLC$=”L/T” THEN GOTO 2930 ELSE GOTO 2940
2930 CFL=(1.328/(SQR(RE)))*((1+.12*M2)^(-.12)): GOTO 2950
2940 CFL=CFT
2950 CDSFL=1.2732*SW*CFL
2960 CDSFT=1.2732*SW*CFT
2970 CDSF=(CDSFL*SWN + CDSFT*SWCYL)/SW
2980 CHI=(M2-1)/(2.4*M2)
2990 IF M<=1 THEN PTP=(1+.2*M2)^3.5
3000 IF M>1 THEN PTP=(1.2*M2)^3.5*((6/(7*M2-1))^2.5)
3010 CMEP=(1.122*(PTP-1)*(DM*DM))/M2
3020 IF MK<=.91 THEN CDHM=0
3030 IF M>=1.41 THEN CDHM=.85*CMEP
3040 IF (M>.91) AND (M<1.41) THEN CDHM=(.254+2.88*CHI)*CMEP
3050 IF M<1 THEN PB2=1/(1+.1875*M2+.0531*M2*M2)
3060 IF M>=1 THEN PB2=1/(1+.2477*M2+.0345*M2*M2)
3070 PB4=(1+9.000001E-02*M2*(1-EXP(LN-LT)))*(1+.25*M2*(1-DB))
3080 PBP1=PB2*PB4
3090 CDB=(1.4286*(1-PBP1)*(DB*DB))/M2
3100 IF M<.95 THEN CDBND=(M^12.5)*(DBND-1)
3110 IF M>=.95 THEN CDBND=(.21+.28/M2)*(DBND-1)
3120 IF M<=1 THEN GOTO 3130 ELSE GOTO 3250
3130 IF LBT>0 THEN GOTO 3150
3140 CDBT=0:GOTO 3210
3150 IF M <= .85 THEN GOTO 3140
3160 TB=(1-DB)/(2*LBT)
3170 TB23=2*TB*TB+TB^3
3180 EBT=EXP((-2)*LBT)
3190 BBT=1-EBT+2*TB*((EBT*(LBT+.5))-.5)
3200 CDBT = 2*TB23*BBT*(1/(.564+1250*CHI*CHI))
3210 XMC = (1+.552*(TA^.8))^(-.5)
3220 IF M <= XMC THEN CDHT=0
3230 IF M >XMC THEN CDHT = .368*(TA^1.8) + 1.6*TA*CHI
3240 CDH = CDHT +CDHM:GOTO 3550
3250 BE2 = M2 – 1
3260 BE = SQR(BE2)
3270 ZE = BE
3280 SSMC = 1 + .368*(TA^1.85)
3290 IF M < SSMC THEN ZE = SQR(SSMC*SSMC-1)
3300 C1 = .7156 – .5313*RTR + .595*(RTR*RTR)
3310 C2 = .0796 + .0779*RTR
3320 C3 = 1.587 + .049*RTR
3330 C4 = .1122 + .1658*RTR
3340 RZ2 = 1/(ZE*ZE)
3350 CDHT = (C1 – C2*(TA*TA))*RZ2*((TA*ZE)^(C3 + C4*TA))
3360 CDH = CDHT + CDHM
3370 IF LBT > 0 THEN GOTO 3390
3380 CDBT = 0:GOTO 3550
3390 TB = (1-DB)/(2*LBT)
3400 IF M > 1.1 THEN GOTO 3450
3410 TB23 = 2*TB*TB + TB^3
3420 EBT = EXP((-2)*LBT)
3430 BBT = 1 – EBT + 2*TB*((EBT*(LBT+.5))-.5)
3440 CDBT = 2*TB23*BBT*(1.774 – 9.3*CHI):GOTO 3550
3450 BB=.85/BE
3460 AA2 = (5*TA)/(6*BE) + (.5*TA)^2 – (.7435/M2)*((TA*M)^1.6)
3470 AA1 = (1 – ((.6*RTR)/M))*AA2
3480 EXL = EXP(((-1.1952)/M)*(LT-LN-LBT))
3490 XXM = ((2.4*M2*M2 – 4*BE2)*(TB*TB))/(2*BE2*BE2)
3500 AA = AA1*EXL – XXM + ((2*TB)/BE)
3510 RB = 1/BB
3520 EXBT = EXP((-BB)*LBT)
3530 AAB =1 – EXBT + (2*TB*(EXBT*(LBT+RB) – RB))
3540 CDBT = 4*AA*TB*AAB*RB
3550 CDO = CDH + CDSF + CDBND + CDBT + CDB
3560 GOSUB 3620:REM GO FIND KD1
3570 GOSUB 3720:REM GO FIND KD7
3580 KDX=CDO*3.14159/8:REM CONVERT TO BALLISTIC DRAG COEFFICIENT
3590 I1=KDX/KD1:I7=KDX/KD7:C1=SD/I1:C7=SD/I7
3600 IF QATM=1 THEN C1=1.018*C1:C7=1.018*C7:REM ADJUST FOR DIFFERENCE IN DENSITY OF STD METRO ATMOSPHERE
3610 RETURN
3620 REM ** POLYNOMIALS FOR KD1**
3630 M=M
3640 IF M<.059 THEN KD1=.099869208#:RETURN
3650 IF M>.059 AND M<=.249 THEN KD1=.092991951#+.27488882#*M-.4642319#*M^2+14.469294#*M^3-20.951858#*M^4:RETURN
3660 IF M>.249 AND M<=.839 THEN KD1=.12061834#-.2510435*M+.77422485#*M^2-1.2845148#*M^3+.83553257#*M^4:RETURN
3670 IF M>.839 AND M<=1.069 THEN KD1=-.060479641#+4.5757437#*M-14.35859*M^2+15.444495#*M^3-5.4131483#*M^4:RETURN
3680 IF M>1.069 AND M<=1.63 THEN KD1=-5.2655688#+14.573805#*M-14.41555#*M^2+6.3472964#*M^3-1.0518008#*M^4:RETURN
3690 IF M>1.63 AND M<2.87 THEN KD1=-.025251509#+.62823143#*M-.46416627#*M^2+.13537077#*M^3-.014020406#*M^4:RETURN
3700 IF M>2.87 AND M<=3.91 THEN KD1=1.0672197#-.9165249*M+,36667112#*M^2-.065823587#*M^3+.0044593727#*M^4:RETURN
3710 IF M>3.91 AND M<=5 THEN KD1=.18558444#+.033763944#*M-.018500767#*M^2+.0037071892#*M^3-.00025511889#*M^4:RETURN
3720 REM ** POLYNOMIALS FOR KD7 **
3730 IF M<= .055 THEN KD7=.0469878:RETURN
3740 IF M>.055 AND M<=.937 THEN KD7=.047090974#-4.137357E-03*M+.048467034#*M^2-.13972469#*M^3+.11117174#*M^4:RETURN
3750 IF M>.937 AND M<=1.087 THEN KD7=725.8578-2866.4259#*M+4233.6837#*M^2-2771.8976#*M^3+678.92125#*M^4:RETURN
3760 IF M>1.087 AND M<=1.8 THEN KD7=-.65690102#+2.3506886#*M-2.4325414#*M^2+1.07113*M^3-.17312858#*M^4:RETURN
3770 IF M>1.8 AND M<=3.93 THEN KD7=.31506539#-.22927692#*M+.10046774#*M^2-2.111136E-02*M^3+.0016707016#*M^4:RETURN
3780 IF M>3.93 AND M<=4.44 THEN KD7=1.4607388#-1.2794659#*M+.45373674#*M^2-.072403838#*M^3+.0043483486#*M^4:RETURN
3790 RETURN
3800 REM COMPUTE STABILITY FROM MCGYRSA BY BILL DAVIS AND BOB MCCOY
3810 DEFDBL A-Z
3820 IF QATM=2 THEN GOTO 3840
3830 IF QATM=1 THEN RO=.982:RSON=1:AL=0:TF=59:RH=78:BP=29.53: GOTO 3850
3840 RO=1:RSON=1:AL=0:TF=59:RH=0:BP=29.92
3850 D1=BD*25.4:REM CONVERT BD TO MM
3860 L1=BL/BD:REM LENGTH IN CAL
3870 L2=NL/BD:REM NOSE LENGTH IN CAL
3880 D3=MD/BD:REM MEPLAT DIA IN CAL
3890 DIFRAD=(BD-MD)/2:REM RAD BULLET DIA – RAD MEPLAT DIA
3900 RR=(NL^2+DIFRAD^2)/(2*DIFRAD):REM RADIUS TANGENT OGIVE, INCH
3910 RTCAL=RR/BD:REM RADIUS TANGENT OGIVE, CAL
3920 IF QR=1 THEN RTR=1:GOTO 3940
3930 IF QR=2 THEN RTR=RTCAL/RC:REM SHAPE PARAMETER RATIO
3940 R1=RTR
3950 IF QBT=2 THEN LBT=0:ED=BD:DB=1:D2=1:GOTO 3990
3960 IF QBT=1 THEN LBT=BTL/BD:L3=LBT:REM BT LENGTH IN CAL
3970 IF QED=1 THEN ED=BD-2*(BTL*TAN(BTA/57.3)):DB=ED/BD:D2=DB: GOTO 3990:REM ED IN CAL
3980 IF QED=2 THEN BTA=57.3*ATN(((BD-ED)/2)/BTL):DB=ED/BD:D2=DB: REM ED IN CAL
3990 IF QBC=1 THEN R10=11.4:GOTO 4030
4000 IF QBC=2 THEN R10=10.4:GOTO 4030
4010 IF QBC=3 THEN R10=9.899999:GOTO 4030
4020 IF QBC=4 THEN R10=SG
4030 M=V/1116
4040 S1=SQR(1-D3)
4050 S2=1-D2*D2
4060 IF M<=.95 THEN GOTO 4100
4070 IF M>=1.1 THEN GOTO 4120
4080 G1=71.73001-42.433*M
4090 GOTO 4130
4100 G1=20.082+3.726*(M/SQR(1-M^2))
4110 GOTO 4130
4120 G1=35.079-24.066*(SQR(M^2-1)/M)
4130 A1=G1*S2
4140 IF M<1 THEN GOTO 4160
4150 IF M=>1 THEN GOTO 4200
4160 B1=SQR(1-M^2)
4170 B=.82112+.36971*B1
4180 A=34.779+(24.091+(8.977-12.804*R1+8.38*R^2)*L2)*S1*B1-A1
4190 GOTO 4230
4200 B1=(SQR(M^2-1))/M
4210 B=1.0528+.23379*B1-.004884*(M-1)
4220 A=58.873+(8.115+(14.15-15.348*R1+7.216*R^2)*L2)*S1*B1^2-A1
4230 N15=(A*SQR(R10))/((L1^B)*RO)
4240 NINCH15=N15*BD
4250 RETURN
4260 REM COMMENTS ON BULLET DESIGN
4270 PRINT”THE FINISHED BULLET DESIGN IS DEPENDANT ON SEVERAL VARIABLES THAT MUST BE “
4280 PRINT”DETERMINED BEFORE ACTUAL DESIGN WORK IS BEGUN.”
4290 PRINT”THE BULLET LENGTH IS DETERMINED PRIMARILY BY THE LENGTH OF AVAILABLE JACKETS.”
4300 PRINT”AFTER POINT FORMING THE FINISHED BULLET WILL BE SLIGHTLY LONGER THAN THE”
4310 PRINT”ORIGINAL JACKET LENGTH. A BOATTAIL WILL INCREASE THIS LENGTH FURTHER.”
4320 PRINT”BOATTAIL BULLETS OFFER A HIGHER BALLISTIC COEFFICIENT BUT ARE GYROSCOPICALLY”
4330 PRINT”LESS STABLE FOR A GIVEN LENGTH AND WEIGHT. SECANT OGIVES OFFER A SLIGHTLY “
4340 PRINT”HIGHER BALLISTIC COEFFICIENT OVER A TANGENT OGIVE. GENERALLY A SECANT OGIVE”
4350 PRINT”SHOULD BE ABOUT TWICE THE RADIUS IN CALIBERS OF A TANGENT OGIVE FOR A GIVEN”
4360 PRINT”NOSE LENGTH.”
4370 PRINT”VERY LOW DRAG (VLD) DESIGN PRINCIPLES: THE VLD LINE OF BULLETS WERE DESIGNED”
4380 PRINT”BY BILL DAVIS. THEY HAVE A BOATTAIL ANGLE OF BETWEEN 7.5 – 9 DEGREES.”
4390 PRINT”A BOATTATL LENGTH OF 80% OF ONE CALIBER. A BEARING LENGTH OF BETWEEN ONE”
4400 PRINT”CALIBER AND 30% OF THE OVERALL BULLET LENGTH. OVER ALL LENGTH IS ABOUT 5″
4410 PRTNT”CALIBERS LONG. A SECANT OGIVE OF ABOUT 15 CALIBERS IN RADIUS.”
4420 PRINT””:PRINT”PRESS <ENTER> WHE N READY TO CONTINUE”
4430 INPUT QWRY
4440 IF QWRY>=0 THEN CLS:GOTO 200
4450 REM COMPUTE CENTER OF GRAVITY
4460 REM OGIVE CENTER OF GRAVITY
4470 IF QW>0 THEN GOSUB 1220:REM COMPUTE OGIVE VOLUME IF WEIGHT WAS ORIGINALLY ENTERED AND NOT CALCULATED BY THE PROGRAM
4480 IF AV+BV>OGV/2 THEN GOTO 4520
4490 IF AV+BV+CV>OGV/2 THEN GOTO 4530
4500 IF AV+BV+CV+DV>OGV/2 THEN GOTO 4540
4510 IF AV+BV+CV+DV+EV>OGV/2 THEN GOTO 4550
4520 OGVCG=2*NL/10:GOTO 4560:REM OGIVE CENTER OF GRAVITY, REFERENCED FROM JUNCTION OF OGIVE AND BEARING SURFACE IN INCHES
4530 OGVCG=3*NL/10:GOTO 4560
4540 OGVCG=4*NL/10:GOTO 4560
4550 OGVCG=5*NL/10
4560 LBCG=LB/2:REM BEARING LENGTH CENTER OF GRAVITY
4570 IF QW>0 THEN GOSUB 1060:REM CALC LENGTH OF BEARING VOLUME AND BOATTAIL VOLUME IF BULLET WEIGHT ENTERED BY USER
4580 HBD=BD/2
4590 HED=ED/2
4600 BTCG=(BTL*(HBD^2+2*HBD*HED+3*HED^2))/4*(HBD^2+HBD*HED+HED^2) :REM BOATTAIL CENTER OF GRAVITY, REFERENCED FROM JUNCTION OF BOATTAIL AND BEARING SURFACE IN INCHES
4610 A1=OGVCG+LBCG
4620 ACG=(OGV*A1)/(LBV+OGV)
4630 NBTCG=ACG+LBCG:REM FLAT BASE CENTER OF GRAVITY AHEAD OF BASE
4640 IF QBT=2 THEN CG=NBTCG:RETURN
4650 A2=BTCG+NBTCG
4660 CG=(((LBV+OGV)*A2)/VV)+(BTL-ETCG):REM BOATTAIL CENTER OF GRAVITY AHEAD OF BASE
4670 RETURN
4680 REM SUBROUTINE FOR CALCULATING APPROXIMATE WIND DRIFT. EQUATIONS BASED ON ‘KARPOV’ WRITTEN BY WM. C. DAVIS, JR. AMERICAN RIFLEMAN JUNE 1987
4690 RV=(SQR(V)-.863/C1)^2:REM REMAINING VELOCITY
4700 K=2.878/(C1*SQR(V))
4710 TF=300/(V*(1-.3*K)):REM TIME OF FLIGHT
4720 WD1=180*(TF-300/V):REM WIND DRIFT 100 YARDS
4730 RV=(SQR(V)-1.726/C1)^2
4740 K=2.878/(C1*SQR(V))
4750 TF=600/(V*(1-.6*K))
4760 WD2=180*(TF-600/V):REM WIND DRIFT 200 YARDS
4770 RV=(SQR(V)-2.589/C1)^2
4780 K=2.878/(C1*SQR(V))
4790 TF=900/(V*(1-.9*K))
4800 WD3=180*(TF-900/V):REM WIND DRIFT 300 YARDS
4810 RETURN