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