home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 45 / 64er_Magazin_Sonderheft_45_19xx_Markt__Technik_de_Side_A.d64 / trans-2d (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  2KB  |  60 lines

  1. 10 rem ********************************
  2. 20 rem *                              *
  3. 30 rem *      t r a n s - 2 d         *
  4. 40 rem * demonstration von 2d-grafik  *
  5. 50 rem *    heimo ponnath hamburg     *
  6. 60 rem *                              *
  7. 70 rem ********************************
  8. 80 ifa=0thena=1:load"hires4.obj",8,8
  9. 90 sys49152:han:hof:rem aktivieren
  10. 100 rem
  11. 110 rem ---- daten des hauses ---------
  12. 120 data 10,5,10,12,15,18,20,12,20,5
  13. 130 dim h(2,6):rem feld fuer hauspunkte
  14. 140 for i=1 to 5
  15. 150 :read h(1,i),h(2,i)
  16. 160 next i
  17. 170 h(1,6)=h(1,1):h(2,6)=h(2,1)
  18. 180 rem
  19. 190 rem ---- parameter ----------------
  20. 200 xm=319:ym=199
  21. 210 xu=0:xo=30:yu=0:yo=25
  22. 220 xc=10:yc=5
  23. 230 printchr$(147)
  24. 240 input"rotationswinkel =";w
  25. 250 w=w*(NULL)/180:rem umrechnung in bogenmass
  26. 260 input"skalierungsfaktoren sx,sy=";sx,sy
  27. 270 rem
  28. 280 rem ---- zeichenwerte -------------
  29. 290 zf=5:hf=0:l=1
  30. 300 rem
  31. 310 rem ---- gesamtmatrixelemente -----
  32. 320 ra=xm*sx*cos(w)/(xo-xu):rem das ist r11
  33. 330 rb=-ym*sx*sin(w)/(yo-yu):rem r12
  34. 340 rc=-xm*sy*sin(w)/(xo-xu):rem r21
  35. 350 rd=-ym*sy*cos(w)/(yo-yu):rem r22
  36. 360 t1=xm*(xc*(1-sx*cos(w))+sy*yc*sin(w)-xu)/(xo-xu)
  37. 370 t2=-ym*(yc*(1-sy*cos(w))-sx*xc*sin(w)-yo)/(yo-yu)
  38. 380 rem
  39. 390 rem ---- transformationsgleichungen
  40. 400 deffnx(x)=ra*x+rc*y+t1
  41. 410 deffny(y)=rb*x+rd*y+t2
  42. 420 rem
  43. 430 rem ---- zeichnen -----------------
  44. 440 han:loe:far,zf,hf
  45. 450 for i=1 to 5
  46. 460 :x=h(1,i):y=h(2,i):x1=fnx(x):y1=fny(y)
  47. 465 :x=h(1,i+1):y=h(2,i+1):x2=fnx(x):y2=fny(y)
  48. 470 :lin,x1,y1,x2,y2,l
  49. 480 next i
  50. 490 get a$:if a$="" then 490
  51. 500 hof
  52. 520 rem
  53. 530 rem ---- programmende -------------
  54. 540 input"noch einmal (j/n)";a$
  55. 550 if a$="j" then 240
  56. 560 aus
  57. 570 poke 52,160:poke 56,160
  58. 580 clr
  59. 590 end
  60.