Dolzarbligi bizni fanni chuqur o'rganishning etakchi shakllaridan biri bo'lgan informatika fani bo'yicha tanlov kurslarini tashkil etish mavzusini o'rganishga murojaat qilishga undaydi. Ilmiy yangilik va nazariy ahamiyati
"Protseduralar va funktsiyalar" amaliyoti
Download 307.3 Kb.
|
kurs ishi io‘m fakultativ dars
- Bu sahifa navigatsiya:
- Tortburchaklar qurish: 1D, 3D va toldirilgan tortburchaklar. Bino poligonlar.
- Yoylar va doiralarni qurish
- "Yon va aylanalarni qurish" seminari
2.3 "Grafik dasturlash" ixtiyoriy kursi uchun qiziqarli topshiriqlarga misollarFraktal tasvirlarni yaratishga qaratilgan qiziqarli vazifalar taklif etiladi, chunki ular ixtiyoriy sinflarda o'rganish uchun etarlicha qiziqarli. Sierpinski salfetkasini qurish Keling, teng tomonli uchburchakni olaylik va uni uchta median chizig'i bilan to'rtta teng uchburchakka ajratamiz. Biz o'rta uchburchakning ichki qismini o'chiramiz va qolgan uchta yopiq uchburchak bilan biz yuqorida tasvirlangan jarayonni takrorlaymiz, ya'ni ularning har birini o'rta chiziqlar bilan to'rtta teng uchburchakka bo'lamiz va yana o'rtadagilarning ichki qismini o'chirib tashlaymiz. Shubhasiz, jarayonning n bosqichidan so'ng bizda 3 ^ n ta uchburchak bo'ladi. Ularning ballarining birlashishi n - darajali Sierpinski peçetesi deb ataladi. Sierpinski salfetkasini qurish: dastur Sierp ; Graph, crt foydalanadi; turi TComplex = Yozish X : Haqiqiy; Y : Haqiqiy; oxiri; Const iter = 50; maksimal = 127; Varz : TComplex; x, y, n: Butun son; gd, gm : Integer; mx, my : Integer; Boshlash gd := Aniqlash; InitGraph(gd,gm,''); Mx := GetMaxX div 2; Mening := GetMaxY div 2; y uchun:= -my to my do x := -mx dan mx gacha bo'lgan qiymatlar uchun Boshlang n := 0; zx := X * 0,005; zy := Y * 0,005; (sqr(zx) + sqr(zy) < max) va (n < iter) Boshlashda Agar zy>0,5 bo'lsa, boshlang zx:=2*zx; zy:=2*zy-1; Boshqasi Agar zx>0,5 bo'lsa, boshlang zx:=2*zx-1; zy:=2*zy; Boshqasi Boshlash zx:=2*zx; zy:=2*zy; oxiri; Inc(n); oxiri; PutPixel(mx + x,my + y,16 - (n mod 16)); Klaviatura bosilsa, keyin Break; oxiri; o'qish tugmasi ; Grafikni yopish ; oxiri . Koch egri chizig'ini qurish Biz asosiy segmentdan boshlaymiz : uning o'rta uchinchi qismini o'chiring va uni teng qirrali uchburchakning tomonlari bilan almashtiring. Agar taglikning uzunligi 1 ga teng bo'lsa, u holda fragment har biri uzunligi 1/3 va bo'lgan to'rtta segmentdan iborat bo'ladi. shuning uchun umumiy uzunlik 4/3 ni tashkil qiladi. Keyingi bosqichda biz 16 ta segmentdan iborat bo'lgan va umumiy uzunligi 16/9 bo'lgan singan chiziqni olamiz va hokazo. Koch egri chizig'i cheksiz uzunlikka ega. Bundan tashqari, Koch egri chizig'i to'rtta teng qismdan iborat bo'lib, ularning har biri o'xshashlik koeffitsienti 1/3 bo'lgan butun egri chiziqqa o'xshaydi. Koch egri chizig'i o'ziga o'xshaydi: har bir qism butunning miniatyura nusxasidir. Koch egri chizig'ini qurish uchun biz p yaqinlashuv darajasini aniqlaymiz . Bu shuni anglatadiki, biz " p " o'zgarishlarini "tayanch" ga qo'llaymiz. Agar taglik segment bo'lsa, natijada teng uzunlikdagi segmentlardan tashkil topgan singan chiziq bo'ladi . Biz segmentlarni 0 dan inklyuzivgacha raqamlaymiz. Har bir qadam uchun (indeks n ga to‘g‘ri keladi ) segment, aniqrog‘i vektor chizilishi kerak. Koch egri chizig'ini qurish: dastur Kox ; CRT, Grafikdan foydalanadi; const p=5; var gd, gm: Integer; i, j: butun son; x, y, l: Haqiqiy; a: haqiqiy; n, m, k: Butun son; boshlash gd:=Aniqlash; InitGraph(gd, gm, 'c:\bp\bgi'); x:=0; y:=400; l:=640/(exp(p*ln(3))); MoveTo(Round(x), Round(y)); for i:=0 to Round(exp(p*ln(4)))-1 boshlanadi a:=0; n:=i; k:=0; takrorlang m:=n mod 4; n:=n div 4; hodisa m 0: a:=a+0; 1: a:=a-pi/3; 2: a:=a+pi/3; 3: a:=a+0; oxiri; inc(k); k>=p gacha; x:=x + l*cos(a); y:=y + l*sin(a); LineTo(Round(x), Round(y)); oxiri; ReadKey; Grafikni yopish ; oxiri . Fraktal xochni qurish Biz nuqtalarning tasodifiy ketma-ketligini hosil qilamiz , , , ... Har bir nuqta oldingisidan L yoki R o'zgarishini oldingisiga qo'llash orqali olinadi , bu erda Bundan tashqari, ushbu o'zgarishlarning har biri 0,5 ehtimollik bilan tasodifiy tanlanadi. Masalan, =2,8 bo'lsin. Bu erda L — nuqtaga nisbatan aylanish (0, 0) va R - markazdan masofaga (0, 1) bog'liq bo'lgan o'zgaruvchan indikator bilan nuqta (1, 0) atrofida cho'zish. Natijada fraktal "xoch" "Xoch" fraktalini qurish dastur Rnd ; CRT, Grafikdan foydalanadi; Var gd,gm : Butun son; chizish tartibi; const iter = 70000; a = 2,8; Var t, x, y, p : Haqiqiy; k : LongInt; mx, my, rad : Butun son; Boshlash mx := 320; mening := 240; rad := 200; tasodifiy qilish; x := 0,0; y := 0,0; k uchun:= 1 Takrorlash uchun Boshlang p := Tasodifiy; t := x; Agar p <= 1/2 bo'lsa, boshlang x := -y; y := t; oxiri Boshqa Boshlash x := 1+(a*(x-1))/(sqr(x-1)+sqr(y)+1); y := a*y/(sqr(t-1)+sqr(y)+1); oxiri; PutPixel(mx + Round(rad * x), my - Round(rad * y), 2); oxiri; oxiri; Boshlash gd := Aniqlash; InitGraph(gd,gm,''); chizish; ReadKey ; Grafikni yopish ; oxiri . Download 307.3 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling