3.2 Grafik primitivlarni hosil qilish
Grafika ilmiy tekshirishlarda injenerlik loyiha ishlarida, fizik ob`ektlarning kompyuter modellarini qurishda keng qo`llaniladi. Grafika tarkibiga kiruvchi eng murakkab va keng qamrovli yo`nalishdir. Grafika bilan ishlovchi foydalanuvchi loyihalash, yoritish, ob`ektlar va kameralarni ko`chirish, tovush va namoyish effektlardan foydalanish kabi sohalardan bilimlarga ega bo`lishi kerak. Bu yerda shu
sohaning tashkil etuvchilari — fazolar, ob`ektlarni modellashtirish, animanamoyish tog`risida ma`lumotlar keltiriladi.
Oxirgi yillarda an`anaviy grafik dasturlar bilan modellashtirish, animasiya va namoyish dasturlari ko`p tarqaldi. Shu davrda ishlab chiqilgan dasturlardan Discreet kompaniyasining JAVA dasturlari o`z mohiyatlari bo`yicha gibrid grafik paketlardir. Chunki ular bir tomondan vektorli ob`ektlar bilan ishlash imkoniyatini bersa, ikkinchi tomondan ish natijasidan pikselli tasvir alohida kadr sifatida yoki videotasmada olinadi. Modellashtirishning xususiyatlari va ularda animasiya harakatlarni qo`shish imkoniyati ularga bo`lgan qiziqishni keskin oshirib yuboradi.
Ularni:
namoyish effektlarini kino va videoindustriyada;
televizion tijoratda;
interaktiv o`yinlarda;
sano`t va arxitektura dizaynida
ilmiy, tibbiy va sud namoyishlarida;
o`rgatuvchi dasturlar va kompyuterda ishlatish mumkin.
Shuni ta`kidlash lozimki grafika dasturlari kompyuter qurilmalari, uning dasturiy ta`minoti hamda u bilan ishlovchi dizayner bilimlariga juda yuqori talablar qo`yadi.
Grafika bilan ishlaganda, shakllar hosil qilinadigan fazoga alohida e`tabor berish kerak. Bu holda an`anaviy tekislik grafika maqsadlariga to`g`ri keltiriladi. Grafikada ishchi fazoni shunday ifodalash kerakki, unda nafaqat modellashtirilayotgan geometrik shaklni, balki uning geometrik joylashishi va holati hisobga olinishi kerak. Grafikada dekart, silindrik va sferik koordirata sistemalari ishlatiladi.
Qurilgan barcha ob`ektlarni geometrik va nogeometrik ob`ektlarga bo`lish mumkin. Geometrik ob`ektga asosan sahna tashkil etuvchilarini qurishda ishlatiladi: personajlar, jismlar, boshqa so`z bilan aytganda — mavjud borliq ob`ektlarini. Nogeometrik ob`ektlar esa sahnaga jonlilik hissini berish uchun ob`ektlarga ta`sir etuvchi kuchlarni modellashtirish. Boshqacha aytganda namoyish etilayotgan kadrda geometrik ob` ektlar aynan nogeometrik ob`ektlar esa oraliq ko`rinishda namoyon bo`ladi.
Geometrik ob` ektlarni ko`rishda juda kuchli va keng tarqalgan dasturini tanlab uning misolida ob`ektlarning asosiy turlari va modellashtirish texnologiyasini ko`rib o`tamiz. Bu dastur yordamida geometric ob`ektlarning quyidagi turlari qurilishi mumkin. Ya’ni rangsiz sirtlar turli uzunlikdagi yorug’lik to’lqinlarini bir tеkisda qaytaradi. Rangli sirtlar esa yorug’lik to’lqinlarini turlicha qaytaradi.
Fizik nuqtai nazardan yorug’lik ikki paramеtr bilan haraktеrlanadi: enеrgiya va to’lqin uzunligi. Birоq kоmpyutеr grafikasida yorug’likning fizik paramеtrlari analоgi bo’lgan bоshqa ikki paramеtr qo’llaniladi: ravshanlik va rang. Birinchisi rangning miqdоrini, ikkinchisi esa sifatini haraktеrlоvchi hisоblanadi. Turli yorug’lik manbalarini rangiga va ravshanligiga ko’ra taqqоslash mumkin. Amaliy jihatdan bu ikkisini bir-biridan ajratish mumkin emas. Nazariy tоmоndan esa ko’pgina grafik dasturlarda maхsus LAB rang mоdеli yordamida ajratiladi. Ranglar insоn tоmоnidan turlicha qabo’l qilinadi. Rangni qabo’l qilish kayfiyatga va charchaganlikka bоg’lik bo’ladi. Navbatdagi qadamda biz hosil qilingan tasvirlarni silindr va kubning ichiga joylashtiramiz.
Buning uchun yuqoridagi buyruqlar ichidan tanlaymiz va silindrning markazi sifatida konusning markazini tanlab, paydo bo’ladigan sorovlarga mos ravishda 100 sonini kiritamiz. Natijada silindrga ichki chizilgan konus tasviri hosil bo’ladi. Endi sharni ham silindr ichiga joylashtiramiz. Buning uchun ham silindr markazi sifayida shar markazi ko’rsatilib, buyruqlar satrida hosil bo’ladigan so’rovlarga 50 va 100 sonlarini kiritsak, silindr asosi shar radiusi tekisligida joylashib qoladi. Bu xatolikni tuzatish uchun tanlangan buyruqni faollashtirish tugmasini bosamiz. So’ngra markazini tanlab, vertikal chiziq bo’ylab pastga hamda ega bo’lamiz. Navbatda biz piramida tasvirini kub ichiga joylashtirishni ko’ramiz. Buning uchun yuqoridagi buyruqlar ichida tanlab buyruqlar satrida paydo bo’ladigan dastlabki ikkita asosining diagnali uchlarini ko’rsatamiz, so’ngra navbatdagi.Masalalarni kuribchiqamiz.
import java.applet.Applet;
import javax.swing.*;
import java.awt.*;
public class oyn extends JFrame {
JPanel a=new JPanel();
JButton b1=new JButton("Familya");
JTextArea g=new JTextArea(10,120);
JButton b2=new JButton ("Isim");
JLabel d1=new JLabel ("Bu java imkoniyatlaridan biri parcha");
JTextArea A=new JTextArea(10,120);
JScrollPane p=new JScrollPane(A);
String[] t1={"file","New","open","open project","Save","Save As..."};
JComboBoxh1=new JComboBox(t1);
Container q1=getContentPane();
JPanel t2=new JPanel (new GridLayout(2,2));
public oyn(){
super ("Abbosning birinchi appleti");
add(a);
setVisible(true);
add(a);
a.add(b1);
a.add(b2);
a.add(d1);
a.add(p);
a.add(h1);
a.add(new JButton("ha"));
a.add(new JButton("yuq"));
a.add(new JButton("bekor qilish"));
}
public
static void main (String[] args){
oyn b
=new oyn();
}
Bu masalamiz natijasini kurish uchun quydagi tugmani bosamiz.
Tugmani bosib quydagi natijaga ega bo’lamiz.
Bu dasturimizda faqatgina bitta tugmaniz ishlaydi.
Quydagi dastur matinda primitiv shakillarga rang berish jarayoni aks ettirilgan.
import java.applet.Applet;
import java.awt.*;
import java.applet.*;
public class grafik_rang extends Applet {
public void paint(Graphics g) {
g.drawLine(0, 0, 100, 90);
g.setColor(Color.green);
g.drawLine(0, 90, 100, 10);
g.setColor(Color.red);
g.drawLine(40, 25, 250, 80);
g.drawLine(10, 150, 60, 50);
g.setColor(Color.blue);
g.fillRect(100, 150, 60, 50);
g.setColor(new Color (255,100,100));
g.drawRoundRect(190, 150, 60, 50, 15, 15);
g.fillRoundRect(280, 150, 60, 50, 30, 40);
g.setColor(new Color (100,200,100));
g.drawOval(10, 250, 50, 50);
g.fillOval(90, 250, 75, 50);
g.setColor(Color.YELLOW);
g.drawOval(190, 260, 100, 40);
g.setColor(Color.MAGENTA);
g.drawArc(10, 350, 70, 70, 0, 180);
g.fillArc(60, 350, 70, 70, 0, 75);
int xpoints[]={10,200,10,200,10};
int ypoinys[]={450,450,650,650,450};
int num=5;
g.setColor(new Color (0,100,100));
g.fillPolygon(xpoints,ypoinys,num);
int xpoints1[]={260,450,260,450,260};
int ypoinys1[]={450,450,650,650,450};
g.getColor();
g.drawPolygon(xpoints1,ypoinys1,num);
}
}
Ranglar bilan ishlash. Java tiling AWT paketi dastlab malum bir rangni taklif etadi. So’ngra bu rang joriy apparat parametirlarga moslab o’zgartirlishi mumkin. Ranglar Color sinfga joylashgan o’zgarmaslar yordamda aniqlanadi. Kerakli rangdan foydalanish uchun Color sinfi turdagi obyekt tegishli rang o’zgarmasni kiritish kerak.
Quyda Color sinifi konstruktorining ko’p foydalanadigan 3 xil ko’rinishiga misol.
Do'stlaringiz bilan baham: |