C*********************************************************************** C C THIS SUBROUTINE DISPLAYS A COMPONENT, TAKING THE STANDARD COMPONENT C DRAWING THEN ROTATING, SCALING AND TRANSLATING IT TO THE REQUIRED C POSITION. ALLOWANCE IS ALSO MADE FOR THE DISPLAY OF A SIMPLE C CONNECTION. C C*********************************************************************** SUBROUTINE PLACE(DUM,IZ) C DUM IS ONE OF THE STANDARD COMP. C DRAWINGS, IZ IS THE NUMBER OF C ENTRIES IN DUM TO BE USED. REAL COMP(4,12),DUM(4,9) INTEGER END,END1 COMMON /PLA/COMP,END,SCALE COMMON PAR(60,6),OP(10),W(60),D(60),M(20,60),NODE(60,12) C FIRST SET INITIAL VALUES. I=END END=IZ END1=1 C NOW SET XI,YI, I=1,3 TO THE VALUES C OF THE THREE NODE POSITIONS. X1=NODE(I,4) Y1=NODE(I,5) X2=NODE(I,8) Y2=NODE(I,9) C ABOVE ARE END POINTS, NEXT IS C COMPONENT POSITION C THERE IS NO COMPONENT POSITION C FOR A BUS. IF(END.EQ.1)GO TO 100 X3=NODE(I,6) Y3=NODE(I,7) C FIRST ROTATE THE COMPONENT. SQ=SQRT((X2-X1)**2+(Y2-Y1)**2) COSTH=(X2-X1)/SQ SINTH=(Y2-Y1)/SQ DO 2 J=1,END DO 2 I=1,3,2 I1=I+1 COMP(I,J)=COSTH*DUM(I,J)-SINTH*DUM(I1,J) 2 COMP(I1,J)=SINTH*DUM(I,J)+COSTH*DUM(I1,J) C TRANSLATE AND SCALE THE COMPONENT. DO 3 J=1,END DO 3 I=1,3,2 I1=I+1 COMP(I,J)=COMP(I,J)*SCALE+X3 3 COMP(I1,J)=COMP(I1,J)*SCALE+Y3 C THE SET-UP OF COMP MUST NOW BE C COMPLETED BY SETTING UP THE C END-POINTS AND PUTTING IN THE ARROW END1=END+1 X3=COMP(1,1) Y3=COMP(2,1) C SET UP THE END-POINTS. 100 COMP(1,1)=X1 COMP(2,1)=Y1 COMP(3,END1)=X2 COMP(4,END1)=Y2 C IF THIS WAS FOR A BUS, RETURN. IF(END.EQ.1)RETURN COMP(1,END1)=X3 COMP(2,END1)=Y3 C NOW PUT IN THE ARROW. SQ=SQRT((X2-X3)**2+(Y2-Y3)**2) COSTH=(X2-X3)/SQ SINTH=(Y2-Y3)/SQ END=END+3 COMP(1,END)=(X2+X3)/2.0 COMP(2,END)=(Y2+Y3)/2.0 END1=END1+1 COMP(1,END1)=COMP(1,END) COMP(2,END1)=COMP(2,END) SURD=SQRT(3.) COMP(3,END1)=COMP(1,END1)-SCALE*(SURD*COSTH-SINTH)/3. COMP(4,END1)=COMP(2,END1)-SCALE*(COSTH+SURD*SINTH)/3. COMP(3,END)=COMP(1,END)-SCALE*(SURD*COSTH+SINTH)/3. COMP(4,END)=COMP(2,END)+SCALE*(COSTH-SURD*SINTH)/3. C ALL FINISHED. RETURN END