home *** CD-ROM | disk | FTP | other *** search
- geo-3d_COM
- prg FORMATTED geos FILE v1.0
- wRITE iMAGE v2.1
- GEOwRITE v2.1
- ***** *) *>*1 g9*******.****. 3* ,9 *< *<{$60}***3
- **.****Q*3
- {$60}*i@*
- *1*****a***9 L&******
- {$60} qUELLTEXT ZUR GEOcom-dEMODISKETTE {$60}
- {$60} (C)94 by denis d\hler/falk rehwagen{$60}
- {$60} dIE dEMODISKETTE KANN KOSTENLOS ANGEFORDERT {$60}
- {$60} WERDEN BEI: {$60}
- {$60} guss, dENIS d{$7c}HLER , gORKISTR.18 , 04347 lEIPZIG {$60}
- name"geo-3d"
- author"rEHWAGEN//d{$7c}HLER"
- class"GEO-3d v1.3"
- code$2800,$4500 : const$4500,$5000 : var$5000,$6000 : startflag $40
- bytevar VERBINDUNGEN,PUNKTANZAHL
- bytevar at $84B3; SELECTION
- row 50 realvar X,Y,Z
- row 100 bytevar VA,VB
- row 50 realvar XB,YB,XA,YA,ZA
- intvarINPUTROUT
- bytevarat$39;PRESSFLAG
- row 9 realvar M
- bytevarI,ZZ,VV,G,U,Z{$7b}HLER,EDIT
- realvar W1,W2,W3,T,M0,X0,Y0,X1,Y1,Z1
- strvar 3;PT,VT
- strvar 3;WINKEL1,WINKEL2,WINKEL3,OA1,OA2,OA3,MA{$7e}STAB,OX,OY
- filevarDATEI
- label INFOROUT,VERBUNDTABROUT,DARSTELLEN,PUNKTTABROUT,VERLASSEN,HILFEROUT,TASTATUR,MAUSKLICK,ANFANG,WINKEL_ZEIGEN
- label EINGABEENDE,MAUSKL_2,WINKEL_EINGEB
- @ANFANG
- cls : pattern0
- rect(dbl258,0),0,(dbl319,1),15 : frame(dbl258,0),0,(dbl319,1),15
- rect0,16,(dbl103,1),199 : frame(dbl1,1),17,(dbl102,0),178
- frame(dbl1,1),178,(dbl102,0),198 : setpos(dbl6,0),192 : print"/b/oGEO-3d v1.3/p"
- rect0,0,(dbl73,0),14 : frame0,0,(dbl30,0),14 : setpos(dbl5,0),10 : print"QUIT"
- frame(dbl30,0),0,(dbl73,0),14 : setpos(dbl37,0),10 : print"ZEIGEN"
- WINKEL1="0" : WINKEL2="10" : WINKEL3="10"
- OA1="0.5" : OA2="2.0" : OA3="0.5"
- MA{$7e}STAB="40" : OX="108" : OY="70"
- VERBINDUNGEN=12 : PUNKTANZAHL=8
- (X<0>)=0 : (Y<0>)=0 : (Z<0>)=0 : (X<1>)=1 : (Y<1>)=0 : (Z<1>)=0
- (X<2>)=1 : (Y<2>)=1 : (Z<2>)=0 : (X<3>)=0 : (Y<3>)=1 : (Z<3>)=0
- (X<4>)=0 : (Y<4>)=0 : (Z<4>)=1 : (X<5>)=1 : (Y<5>)=0 : (Z<5>)=1
- (X<6>)=1 : (Y<6>)=1 : (Z<6>)=1 : (X<7>)=0 : (Y<7>)=1 : (Z<7>)=1
- (VA<0>)=0 : (VB<0>)=1 : (VA<1>)=1 : (VB<1>)=2
- (VA<2>)=2 : (VB<2>)=3 : (VA<3>)=3 : (VB<3>)=0
- (VA<4>)=4 : (VB<4>)=5 : (VA<5>)=5 : (VB<5>)=6
- (VA<6>)=6 : (VB<6>)=7 : (VA<7>)=7 : (VB<7>)=4
- (VA<8>)=0 : (VB<8>)=4 : (VA<9>)=1 : (VB<9>)=5
- (VA<10>)=2 : (VB<10>)=6 : (VA<11>)=3 : (VB<11>)=7
- WINKEL_ZEIGEN
- DARSTELLEN
- mouseon
- gosubWINKEL_EINGEB : on 1 goto MAUSKLICK : mainloop
- @WINKEL_ZEIGEN
- pattern0 : rect(dbl2,0),18,(dbl101,1),176
- setpos(dbl5,0),30:print"/bwINKEL 1:/p" : frame(dbl60,0),20,(dbl95,0),35 : setpos(dbl65,0),30 : printWINKEL1
- setpos(dbl5,0),50:print"/bwINKEL 2:/p" : frame(dbl60,0),40,(dbl95,0),55 : setpos(dbl65,0),50 : printWINKEL2
- setpos(dbl5,0),70:print"/bwINKEL 3:/p" : frame(dbl60,0),60,(dbl95,0),75 : setpos(dbl65,0),70 : printWINKEL3
- setpos(dbl5,0),90 : print"/bmA{$7e}
- STAB:/p" :
- frame(dbl60,0),80,(dbl95,0),95 :
- setpos(dbl65,0),90 : printMA
- setpos(dbl5,0),110 : print"/bX0:/p" :
- frame(dbl60,0),100,(dbl95,0),115 :
- setpos(dbl65,0),110 : printOX
- setpos(dbl5,0),130 : print"/bY0:/p" :
- frame(dbl60,0),120,(dbl95,0),135 :
- setpos(dbl65,0),130 : printOY
- setpos(dbl5,0),150 : print"/bpUNKTE:/p" :
- frame(dbl60,0),140,(dbl95,0),155 :
- setpos(dbl65,0),150 : print(strPUNKTANZAHL)
- setpos(dbl5,0),170 : print"/blINIEN:/p" :
- frame(dbl60,0),160,(dbl95,0),175 :
- setpos(dbl65,0),170 : print(strVERBINDUNGEN)
- return
- DARSTELLEN
- firstmenu
- rect(dbl260,0),2,(dbl318,1),13
- setpos(dbl265,0),10 : print"BERECHNEN"
- W1=(valWINKEL1):W2=(valWINKEL2):W3=(valWINKEL3)
- M0=(valMA
- STAB):X0=(valOX):Y0=(valOY)
- if (W1>=360) then : W1=(W1-((floor(W1/360))*360)) : endif
- if (W2>=360) then : W2=(W2-((floor(W2/360))*360)) : endif
- if (W3>=360) then : W3=(W3-((floor(W3/360))*360)) : endif
- T=(3.1415927/180)
- W1=(W1*T):W2=(W2*T):W3=(W3*T)
- <0>)=((cosW2)*(cosW3))
- (M<3>)=(-((cosW2)*(sinW3)))
- (M<6>)=(sinW2)
- (M<1>)=(((cosW1)*(sinW3))+(((sinW1)*(sinW2))*(cosW3)))
- (M<4>)=(((cosW1)*(cosW3))-(((sinW1)*(sinW2))*(sinW3)))
- (M<7>)=(-((sinW1)*(cosW2)))
- (M<2>)=(((sinW1)*(sinW3))-(((cosW1)*(sinW2))*(cosW3)))
- (M<5>)=(((sinW1)*(cosW3))+(((cosW1)*(sinW2))*(sinW3)))
- (M<8>)=((cosW1)*(cosW2))
- rect(dbl260,0),2,(dbl318,1),13
- setpos(dbl265,0),10 : print"DARSTELLEN"
- I=0 : repeat
- (XA<I>)=((((M<0>)*(X<I>))+((M<3>)*(Y<I>)))+((M<6>)*(Z<I>)))
- (YA<I>)=((((M<1>)*(X<I>))+((M<4>)*(Y<I>)))+((M<7>)*(Z<I>)))
- (ZA<I>)=((((M<2>)*(X<I>))+((M<5>)*(Y<I>)))+((M<8>)*(Z<I>)))
- if(((YA<I>)-2)==0) then : T=0 : else : T=((YA<I>)/((YA<I>)-2)) : endif
- X1=(M0*((XA<I>)-(T*((XA<I>)-0.5)))):Z1=(M0*((ZA<I>)-(T*((ZA<I>)+(-0.8))))
- (XB<I>)=((104+X0)+X1):(YB<I>)=((16+Y0)+Z1)
- incI
- until(I==PUNKTANZAHL)
- rect(dbl103,0),16,(dbl319,1),199
- I=0 : repeat
- VV=(VA<I>):ZZ=(VB<I>)
- if(not(((floor(XB<VV>))==(floor(XB<ZZ>)))and((floor(YB<VV>))==(floor(YB<ZZ>))))))then
- line(dbl(int(XB<VV>)),0),(byte(YB<VV>)),(dbl(int(XB<ZZ>)),0),(byte(YB<ZZ>))
- endif
- incI
- until(I==VERBINDUNGEN)
- return
- @WINKEL_EINGEB
- rect(dbl260,0),2,(dbl318,1),13
- setpos(dbl265,0),10 : print"eINGABE"
- if(EDIT==0) : setpos(dbl65,0),30 : setinpWINKEL1,EINGABEENDE : endif
- if(EDIT==1) : setpos(dbl65,0),50 : setinpWINKEL2,EINGABEENDE : endif
- if(EDIT==2) : setpos(dbl65,0),70 : setinpWINKEL3,EINGABEENDE : endif
- if(EDIT==3) : setpos(dbl65,0),90 : setinpMA{$7e}STAB,EINGABEENDE : endif
- if(EDIT==4) : setpos(dbl65,0),110 : setinpOX,EINGABEENDE : endif
- if(EDIT==5) : setpos(dbl65,0),130 : setinpOY,EINGABEENDE : endif
- INPUTROUT=(intat $84A3) : on 0 goto TASTATUR
- return
- @EINGABEENDE
- gosubWINKEL_EINGEB
- mainloop
- VERLASSEN
- INFOROUT
- firstmenu
- strnbox"/bGEO-3d vERSION 1.3","1992 BY fALK rEHWAGEN","1993 BY dENIS d{$7c}HLER"
- mainloop
- @HILFEROUT
- firstmenu
- rect(dbl5,0),20,(dbl314,0),190 : frame(dbl5,0),20,(dbl314,0),190
- setpos(dbl10,0),30 : print"/beRL{$7b}UTERUNGEN:"
- setpos(dbl10,0),45 : print"GEO-3d IST EIN dEMO-pROGRAMM F{$7d}R zENTRALPROJEKTIONS-"
- setpos(dbl10,0),60 : print"BERECHNUNG UND -DARSTELLUNG. dIE vERZERRUNGFAKTOREN"
- setpos(dbl10,0),75 : print"WURDEN AUS bERECHNUNGSGR{$7d}NDEN FESTGELEGT. sIE K{$7c}NNEN"
- setpos(dbl10,0),90 : print"DIESE wERTE NICHT {$7b}NDERN. /p"
- wait250 : wait 150
- gotoANFANG
- VERBUNDTABROUT
- firstmenu
- Z{$7b}HLER=0
- pattern0 : rect(dbl260,0),2,(dbl317,0),13
- setpos(dbl265,0),10 : print"eINGABE"
- rect(dbl3,0),18,(dbl101,1),71 : frame(dbl1,1),17,(dbl102,0),71
- setpos(dbl5,0),30 : print"/bvERBINDUNGEN:/p"
- setpos(dbl5,0),44 : print"/blINIE A( "; : print(strZ{$7b}HLER); : print" ):/p"
- setpos(dbl5,0),58 : print"/blINIE B( "; : print(strZ{$7b}HLER); : print" ):/p"
- VT=(strVERBINDUNGEN)
- setpos(dbl80,0),30 : input VT : VERBINDUNGEN=(byte(realVT))
- Z{$7b}HLER=0 : repeat
- if(SCRFLAG==$80)then
- setpos68,44 : print"/b"; : print(strZ{$7b}HLER); : print" ): /p"
- setpos68,58 : print"/b"; : print(strZ{$7b}HLER); : print" ): /p"
- setpos51,44 : print"/b"; : print(strZ{$7b}HLER); : print" ): /p"
- setpos51,58 : print"/b"; : print(strZ{$7b}HLER); : print" ): /p"
- endif
- VT=(str(VA<Z{$7b}HLER>) : setpos(dbl80,0),44 : inputVT : (VA<Z{$7b}HLER>)=(byte(realVT))
- VT=(str(VB<Z{$7b}HLER>) : setpos(dbl80,0),58 : inputVT : (VB<Z{$7b}HLER>)=(byte(realVT))
- rect(dbl54,0),52,(dbl100,0),70 : incZ{$7b}HLER
- until(Z{$7b}HLER==VERBINDUNGEN)
- WINKEL_ZEIGEN :
- WINKEL_EINGEB : mainloop
- PUNKTTABROUT
- firstmenu
- Z{$7b}HLER=0
- pattern0 : rect(dbl260,0),2,(dbl317,0),13
- setpos(dbl265,0),10 : print"eINGABE"
- rect(dbl3,0),19,(dbl100,1),86 : frame(dbl1,1),17,(dbl102,0),86
- setpos(dbl5,0),30 : print"/bpUNKTE:/p"
- setpos(dbl5,0),44 : print"/bpUNKT X( "; : print(strZ{$7b}HLER); : print" ):/p"
- setpos(dbl5,0),58 : print"/bpUNKT Y( "; : print(strZ{$7b}HLER); : print" ):/p"
- setpos(dbl5,0),72 : print"/bpUNKT Z( "; : print(strZ{$7b}HLER); : print" ):/p"
- PT=(strPUNKTANZAHL) : setpos(dbl80,0),30 : input PT : PUNKTANZAHL=(byte(realPT))
- Z{$7b}HLER=0 : repeat
- if(SCRFLAG==$80)then
- setpos77,44 : print"/b"; : print(strZ{$7b}HLER); : print" ): /p"
- setpos76,58 : print"/b"; : print(strZ{$7b}HLER); : print" ): /p"
- setpos76,72 : print"/b"; : print(strZ{$7b}HLER); : print" ): /p"
- setpos57,44 : print"/b"; : print(strZ{$7b}HLER); : print" ): /p"
- setpos56,58 : print"/b"; : print(strZ{$7b}HLER); : print" ): /p"
- setpos56,72 : print"/b"; : print(strZ{$7b}HLER); : print" ): /p"
- endif
- PT=(str(X<Z{$7b}HLER>) : setpos(dbl80,0),44 : inputPT : (X<Z{$7b}HLER>)=(realPT)
- PT=(str(Y<Z{$7b}HLER>) : setpos(dbl80,0),58 : inputPT : (Y<Z{$7b}HLER>)=(realPT)
- PT=(str(Z<Z{$7b}HLER>) : setpos(dbl80,0),72 : inputPT : (Z<Z{$7b}HLER>)=(realPT)
- rect(dbl54,0),52,(dbl100,0),80 : incZ{$7b}HLER
- until(Z{$7b}HLER==PUNKTANZAHL)
- WINKEL_ZEIGEN : WINKEL_EINGEB : mainloop
- TASTATUR
- until(PRESSFLAG==0)
- if (KEYDATA==$E9) goto INFOROUT
- if (KEYDATA==$E8) goto HILFEROUT
- if (KEYDATA==$F0) goto PUNKTTABROUT
- if (KEYDATA==$F6) goto VERBUNDTABROUT
- if (KEYDATA==$F1) goto VERLASSEN
- if (KEYDATA==$14) then : switch : gotoANFANG : endif
- if ((KEYDATA==13)or(KEYDATA==17)) : incEDIT : if(EDIT==6) : EDIT=0 : endif : endif
- if (KEYDATA==16) : decEDIT : if(EDIT==255) : EDIT=5 : endif : endif
- if ((KEYDATA==16)or(KEYDATA==17)) : poke$8504,13 : endif
- callINPUTROUT
- return
- MAUSKLICK
- until(MOUSEDATA==0) : interrupt off
- if (region(dbl60,0),140,(dbl95,0),155) : interrupton : gotoPUNKTTABROUT : endif
- if (region(dbl60,0),160,(dbl95,0),175) : interrupton : gotoVERBUNDTABROUT : endif
- if (region(dbl
- 30,0),0,(dbl73,0),14 : interrupton : invert
- 31,0),1,(dbl72,1),13 : waitSELECTION : invert
- 31,0),1,(dbl72,1),13
- DARSTELLEN : gosubWINKEL_EINGEB : endif
- if (region0,1,(dbl29,0),13) : interrupton : invert1,1,(dbl29,1),13 : waitSELECTION : invert1,1,(dbl29,1),13 : gotoVERLASSEN : endif
- if (region(dbl60,0),20,(dbl95,0),35) : EDIT=5 : gotoMAUSKL_2 : endif
- if (region(dbl60,0),40,(dbl95,0),55) : EDIT=0 : gotoMAUSKL_2 : endif
- if (region(dbl60,0),60,(dbl95,0),75) : EDIT=1 : gotoMAUSKL_2 : endif
- if (region(dbl60,0),80,(dbl95,0),95) : EDIT=2 : gotoMAUSKL_2 : endif
- if (region(dbl60,0),100,(dbl95,0),115) : EDIT=3 : gotoMAUSKL_2 : endif
- if (region(dbl60,0),120,(dbl95,0),135) : EDIT=4 : gotoMAUSKL_2 : endif
- interrupt on
- return
- @MAUSKL_2
- interrupt on
- quitinp
- return
-