Amaliy topshiriqlar




Download 72.85 Kb.
Sana02.02.2024
Hajmi72.85 Kb.
#150755
Bog'liq
6. Grafika
7. Animatsiyalar, 7. Animatsiya yaratish, 5. Mant Fayli, 5-Mavzu. OB’YEKTLAR VA ATRIBUTLAR

Grafika


Amaliy topshiriqlar


Quyidagi funksiyalar grafiklari oraliq uchun qurilsin:
a) b) d)


Quyidagi funksiyalarning aniqlanish sohasi tekshirilsin va grafigi qurilsin:
a) b) d) e) g) f)


Mart oyi kunlarining haroratlarini ko‘rsatuvchi butun sonlar berilgan. Harorat grafigini quring. Nol haroratga mos keluvchi gorizontal chiziqdan yuqorida va pastda to‘g‘ri chiziq kesmalari har xil rangga bo‘yalsin.


Butun sonlar berilgan. Markazi nuqtada bo‘lgan r radiusli aylana va yuqori chap uchi nuqtada, bo‘yi va eni bo‘lgan to‘g‘ri to‘rtburchak chizilsin. Aylana va to‘rtburchak markazlarini tutashtiruvchi kesma yasang.


Ekran tekisligida quyidagi shartlar ostida aylanuvchi kesma yasalsin:
a) kesma o‘rtasiga nisbatan;
b) birorta uchiga nisbatan;
d) kesmani nisbatda bo‘luvchi nuqta atrofida.


Ikkita ko‘rsatkich-kesmalarni (soat millarini) qo‘zg‘almas nuqta atrofida aylanishi amalga oshirilsin. Bunda kesmalar birining (kattasining) bir marta to‘liq aylanib chiqishiga ikkinchisining aylanishiga mos keladi.


Ekranda ishlayotgan elektron soat tasviri hosil qilinsin. Soatdagi raqamlar ko‘rinishi oddiy elektron soatlaridagi kabi yetti segmentli (bo‘lakli) qolipga mos kelishi kerak (rasmga qarang).


Ekran tekisligida quyidagi shartlar bo‘yicha soat millari harakati bo‘yicha (yoki aksincha) aylanuvi to‘g‘ri burchakli uchburchak tasvirlansin: a) markazi atrofida; b) uchlaridan biri atrofida.


Ekranda aylana o‘lchami va uning joylashuvi boshqarilsin. Boshlang‘ich holatda aylana markazi ekran markazida joylashsin va radiusi r deb hisoblansin. Boshqarish klaviaturaning quyidagi tugmalari yordamida amalga oshirilsin. Agar ‘+’ tugmasi bosilsa, aylana radiusi 5 pikselga kattalashsin, agar ‘‘ tugmasi bosilsa, aylana radiusi besh pikselga kichraysin. Klaviaturaning yo‘nalish tugmalari bosilsa, aylana mos yo‘nalishda 5 pikselga ko‘chsin.


Ko‘rinmas aylana bo‘ylab harakat qiluvchi to‘g‘ri chiziq kesmasining tasviri hosil qilinsin.


Ekranda gorizontal yo‘nalishda o‘zgarmas v tezlikda dumalab ketayotgan g‘ildirak tasvirlansin.


Quyon va bo‘ri” masalasi. Chegaralangan to‘rtburchakli sohada bo‘ri va quyonning boshlang‘ich joylari mos ravishda va nuqtalar bilan, ularning vaqt birligidagi ko‘chishlari va bilan berilgan. Soha bo‘ylab bo‘rining quyonni quvlashdagi izi chizilsin.
Har bir vaqt birligida bo‘ri va quyonning harakati quyidagicha amalga oshiriladi:

  • bo‘ri quyon tomonga masofaga ko‘chadi;

  • quyon bo‘ridan uzoqlashadigan tomonga masofaga ko‘chadi.

Bo‘ri va quyon harakatida soha chegarasini (to‘siqlarni) inobatga olish kerak bo‘ladi, ya’ni ular to‘siqlardan “qochishi” zarur bo‘ladi.
Quvlash jarayoni bo‘rining navbatdagi ko‘chishida quyon koordinatasinini kesib o‘tganda yoki oldindan ko‘rsatilgan T vaqtdan keyin tugaydi.

pictureBox1.Refresh();
Graphics gr=pictureBox1.CreateGraphics();
Pen pen = new Pen(Color.Red, 1);
gr.DrawRectangle(new Pen(Color.Black,2) , 0, 0, pictureBox1.Width, pictureBox1.Height);

gr.DrawLine(pen, 10, pictureBox1.Height / 2, pictureBox1.Width - 10, pictureBox1.Height / 2);


gr.DrawLine(pen, pictureBox1.Width / 2, 10, pictureBox1.Width / 2, pictureBox1.Height -10);
int a, b, n;
a = Convert.ToInt32(textBox1.Text);
b = Convert.ToInt32(textBox2.Text);
n = Convert.ToInt32(textBox3.Text);
float x0e, y0e, x, y,h;
h = (float)(b - a) / n;
x0e = pictureBox1.Width / 2;
y0e = pictureBox1.Height / 2;
PointF [] pn=new PointF[n+1];
for (int i = 0; i <= n; i++)
{
x=a+ i*h;
y=x*x*x;
pn[i]= new PointF(x0e + 10*x,y0e - 10*y);
}
gr.DrawLines(pen, pn);

using System;


using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing;

namespace grafika_3


{
class Kesma
{
int l,x0,y0,x2,y2,x1,y1;
Graphics gr;
Pen pen = new Pen(Color.Red, 2);
PictureBox p1;
public Kesma(int l, PictureBox p1)
{
this.p1 = p1;
this.l = l;
x0 = p1.Width / 2;
y0 = p1.Height / 2;
gr = p1.CreateGraphics();

}
public Kesma() { }


public void a_shart(int a)
{
p1.Refresh();
gr.DrawRectangle(pen,0,0,p1.Width,p1.Height);
x2=x0 +(int)(l*Math.Cos(a*Math.PI/180));
y2 =y0- (int)(l * Math.Sin(a * Math.PI / 180));
gr.DrawLine(pen,x0,y0,x2,y2);
Font f=new Font("Times",14);
gr.DrawString("saalom",f ,Brushes.Red,x0, y0);
}
public void b_shart(int a)
{
p1.Refresh();
gr.DrawRectangle(pen, 0, 0, p1.Width, p1.Height);
x2 = x0 + (int)(l/2 * Math.Cos(a * Math.PI / 180));
y2 = y0 - (int)(l/2 * Math.Sin(a * Math.PI / 180));

x1 = x0 + (int)(l/2 * Math.Cos((a+180) * Math.PI / 180));


y1 = y0 - (int)(l/2 * Math.Sin((a+180) * Math.PI / 180));

gr.DrawLine(pen, x0, y0, x2, y2);


gr.DrawLine(pen, x0, y0, x1, y1);
}
public void c_shart(int a)
{
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace grafika_3


{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

static int a = 90;


Kesma ob;
private void button1_Click(object sender, EventArgs e)
{
ob = new Kesma(50, pictureBox1);
timer1.Enabled = !timer1.Enabled;

label1.Text = DateTime.Today.ToString();


}

private void timer1_Tick(object sender, EventArgs e)


{
ob.b_shart(a);
a = a - 5;
a = a % 360;
label1.Text = DateTime.Now.ToString();
}

private void button2_Click(object sender, EventArgs e)


{
MessageBox.Show(Math.Sin(90*Math.PI/180).ToString());
}
}
}



Download 72.85 Kb.




Download 72.85 Kb.