CLS PRINT "GEOMETRIC PROPERTIES OF AN" PRINT "ARBITRARY PLANE DOMAIN" PRINT REM DATA INPUT MODULE PRINT "(R)EAD FROM DATA OR (I)NPUT DATA?"; INPUT " ";IN$ AF=0 IF IN$="r" OR IN$="R" THEN AF=1 PRINT IF AF=0 THEN INPUT "TOTAL NUMBER OF CONTOURS? ";N3 ELSE IF READ N3 END IF N3=N3-1 IF AF=0 THEN PRINT PRINT "FOR EACH CONTOUR" PRINT "VERTICES MUST BE NUMBERED CONSECUTIVELY" PRINT "STARTING WITH 1" PRINT PRINT "DEFINITION OF EXTERIOR CONTOUR" PRINT INPUT "NUMBER OF VERTICES? "; N1 PRINT ELSE IF READ N1 END IF N = N1 REM ==COMPUTE ELEMENT PROPERTIES FOR EXTERIOR CONTOUR== GOSUB [ONZETHZE] REM ==CHECK FOR AREA SIGN== I0 = 1 IF S0 >0 THEN [TWFOZE] I0 = -1 REM ==SIMPLIFY CONNECTED DOMAIN PROPERTIES== [TWFOZE] A = I0 * S0 Q1 = I0 * M1 Q2 = I0 * M2 I1 =ABS(R1) I2 =ABS(R2) I3 =I0 * R3 REM ==CHECK FOR MULTIPLE CONNECTIVITY== IF N3 = 0 THEN [FIZEZE] REM ==INTERIOR DOMAINS== J = 0 [THTWZE] J = J + 1 IF AF=0 THEN PRINT PRINT "DEFINITION OFINTERIOR CONTOUR"; J PRINT INPUT "NUMBER OF VERTICES? ";N2 ELSE IF READ N2 END IF N = N2 REM ==COMPUTE INTERIOR ELEMENT PROPERTIES== GOSUB [ONZETHZE] REM ==CHECK FOR AREA SIGN== I0 = 1 IF S0 > 0 THEN [FOTHZE] I0 =-1 REM ==UPDATE PROPERTIES== [FOTHZE] A = A -I0 * S0 Q1 = Q1 -I0 * M1 Q2 = Q2 -I0 * M2 I1 = I1 -ABS(R1) I2 =I2 -ABS(R2) I3 = I3 -I0 * R3 REM ==CHECK FOR CONNECTIVITY ORDER== IF J < N3 THEN [THTWZE] REM ==CENTROID COORDINATES== [FIZEZE] X = Q2 / A Y = Q1 / A PRINT PRINT PRINT "GEOMETRIC PROPERTIES" PRINT "WITH RESPECT TO GIVEN AXES" PRINT PRINT"AREA=";A PRINT PRINT"COORDINATES OF CENTROID" PRINT"XG=";X PRINT"YG=";Y PRINT PRINT "MOMENTS OF INERTIA" PRINT "IXX ="; I1 PRINT "IYY ="; I2 PRINT "IXY="; I3 PRINT PRINT "STATIC MOMENTS" PRINT "MXX=";Q1 PRINT "MYY ="; Q2 PRINT PRINT "PRESS RETURN TO CONTINUE" INPUT W$ REM ==CENTROIDAL PROPERTIES WITH RESPECT TO PARALLEL AXES== J1 = I1 -A * Y * Y J2 = I2 -A * X * X J3 = I3 -A * X * Y C1 = (J1 + J2) / 2 C2 = (J2 -J1) / 2 C3 = (C2 * C2 + J3 * J3)^.5 REM ==PRINCIPAL PROPERTIES== P1 = C1 + C3 P2 = C1 -C3 P0 = 3.141592653589 REM ==COMPUTE ORIENTATIONOFPRINCIPAL AXES== T = P0 / 4 IF ( ABS(C2) < .00001) THEN [EISIZE] T = ATN(J3 / C2) / 2 [EISIZE] T = T * 180 / P0 PRINT PRINT PRINT "INERTIA TENSOR WITH RESPECT" PRINT "TO PARALLEL AXES THRU CENTROID" PRINT PRINT "IXXG =";J1 PRINT "IYYG="; J2 PRINT "IXYG=";J3 PRINT PRINT PRINT "PRINCIPAL AXES AND MOMENTS OF INERTIA" PRINT PRINT "ANGLE =";T PRINT "IMAX = "; P1 PRINT "IMIN ="; P2 GOTO [ONFOZEZE] REM ==INITIALIZE ELEMENT VARIABLES== [ONZETHZE] S0 = 0 M1 = 0 M2 = 0 R1 = 0 R2 = 0 R3 = 0 REM ==INPUT COORDINATES== IF AF=0 THEN PRINT PRINT "ENTER VERTEX COORDINATES (X,Y)" PRINT "VERTEX 1 X,Y?" INPUT "X= ";X1 INPUT "Y= ";Y1 PRINT ELSE IF READ X1 READ Y1 END IF X0 = X1 Y0 = Y1 I = 2 [ONONFIZE] IF AF=0 THEN PRINT "VERTEX ";I;" X,Y?" INPUT "X= ";X2 INPUT "Y= ";Y2 ELSE IF READ X2 READ Y2 END IF REM ==ELEMENT AREA== [ONONSEZE] S= (X1 *Y2-X2*Y1) /2 REM ==ELEMENT CENTROID== Z1 =(X1 +X2)/3 Z2 = (Y1 + Y2) / 3 REM ==FIRST MOMENTS== M1 = M1 +S *(Z2) M2 =M2+S * (Z1) REM ==INERTIA MOMENTS== R1 = R1 + S * (Y1 * Y1 + Y2 * Y2 + Y1 * Y2) / 6 R2 = R2 + S * (X1 * X1 + X2 * X2 + X1 * X2) / 6 R3 = R3 + S * (X1 * Y1 + X2 * Y2 +(X1 * Y2 +X2 * Y1)/2)/6 REM ==UPDATE AREA== S0 = S0 + S X1 = X2 Y1 = Y2 I = I + 1 REM ==CHECK FOR LAST VERTEX== IF I< N + 1 THEN [ONONFIZE] IF I>(N+1) THEN [ONTHFOZE] REM ==LAST ELEMENT== X2 = X0 Y2 = Y0 GOTO [ONONSEZE] [ONTHFOZE] RETURN [ONFOZEZE] END DATA 4 DATA 8,7.5,3,18.5,3,21,13,23,13,23,15,3,15,3,13,5,13 DATA 4,8,4,10,4,10,13,6,13 DATA 4,11,13,15,13,15,4,11,4 DATA 4,20,13,16,13,16,4,18,4