Báo Cáo Đồ họa Máy tính Đề tài: Xây dựng phần mềm hỗ trợ học sinh cấp III học khảo sát hàm số
Trang 1Bài tập lớn kết thúc môn:
ĐỒ HỌA MÁY TÍNH
Đề tài: Xây dựng phần mềm hỗ trợ học sinh cấp III
học khảo sát hàm số
Lời mở đầu 3
Phần I: Giới thiệu về phần mềm 4
Phần II: Chi tiết phần mềm 4
1) Khảo sát hàm số 4
2) Vẽ đồ thị hàm số 4
1 Tạo một giao diện 4
1.1)GroupBox: Chọn hàm 5
1.2)Sau khi chọn hàm ta có thể thực hiện các chức năng vẽ hoặc khảo sát.6 1.3) Chức năng vẽ: 12
2 Ngoài ra còn một số nội dung các hàm vẽ đồ thị: 19
2.1 Hàm nhập các hệ số: 19
2.2 Hàm vẽ trục tọa độ: 21
3 Hàm ẩn hiện số 22
4 Vẽ đường lưới 23
5 Hàm vẽ tiệm cận: 24
6 Hàm nhập giá trị tiếp điểm để vẽ tiếp tuyến: 25
7 Hàm vẽ tiếp tuyến: 26
8 Hàm PaintGraph (vẽ đồ thị chuẩn) 27
Phần III Một số biến, đối tượng sẽ dùng trong chương trình: 28
Tài liệu tham khảo 30
Tổng kết : 31
Trang 2Lời mở đầu
Như chúng ta biết việc học tập của chúng ta ngày càng nâng cao theocấp độ Chúng ta phải tìm tòi và giải quyết tất cả những vấn đề khó khăngặp phải trong học tập đặc biệt là các bạn học sinh cấp III vì là học sinhcuối cấp nên việc học càng vất vả và khó khăn hơn với các môn học đểchuẩn bị cho thi tốt nghiệp và kì thi ĐH Môn toán là môn đòi hỏi tư duyphải logic, nhạy bén với các bài tập khó liên quan đến hình vẽ như cáchình không gian, các đồ thị hàm số… Nhưng khi bước vào thế kỉ XXIthời đại công nghiệp hóa hiện đại hóa Cùng với sự phát triển vượt bậccủa công nghệ thông tin và các phần mềm ứng dụng việc giúp đỡ các bạnhọc sinh học tập cũng như vui chơi ngày càng đơn giản hơn nhiều
Dưới sự hướng dẫn của cô giáo Vũ Thị Minh Yến chúng tôi đã xây
dựng một phần mềm giúp các bạn học sinh học tập môn khảo sát và vẽ
đồ thị trong toán học Đề tài nhóm tôi thực hiện là:: Xây dựng phần
mềm hỗ trợ học sinh cấp III học khảo sát hàm số.
Trang 3Phần I: Giới thiệu về phần mềm
Phần mềm này hướng các bạn học sinh cấp III có thể khảo sát vàvẽ đồ thị của các hàm số theo chuẩn của Bộ Giáo Dục & ĐàoTạo Nhưchúng ta được biết cấp III các bạn học sinh được học khảo sát và vẽ đồthị của một số hàm số:
o Hàm số bậc 2
o Hàm số bậc 3
o Hàm trùng phương
o Hàm bậc nhất trên bậc nhất
o Hàm bậc hai trên bậc nhất
Ngoài ra còn có thể vẽ tiếp tuyến tại một điểm và tiệm cận củatừng hàm Giúp học sinh có thể dễ dàng giải quyết các bài toán khảosát ở một trong số những dạng thường gặp mà chúng tôi nêu ở trên.Các bạn có thể giải những bài toán với những hệ số lớn, có thể phóng
to, thu nhỏ hệ trục ở những cự li khác nhau, các bạn sẽ không phải bốidối khi đồ thị phải vẽ có tung độ, hoành độ quá lớn… vì trong phầnmềm của chúng tôi có đầy đủ các chức năng như: phóng to, thu nhỏ,lưu bài vẽ, tạo bài mới, ẩn hiện hệ số trục, ẩn hiện tiệm cận, đườnglưới, kéo hệ trục về bên phải, kéo hệ trục về bên trái, trung tâm…Giúp các bạn dễ hình dung hơn và dễ dàng giải đáp các bài toán liênquan đến đồ thị
Phần II: Chi tiết phần mềm
- Phần mềm gồm 2 chức năng chính:
1) Khảo sát hàm số
2) Vẽ đồ thị hàm số
- Giao diện được tạo trên visual studio với ngôn ngữ lập
trình C#.
1 Tạo một giao diện
Trang 5public void initCobChoNham()
{
cob_chonham.Items.Add("Hàm số bậc hai");
cob_chonham.Items.Add("Hàm số bậc ba");
cob_chonham.Items.Add("Hàm trùng phương");
cob_chonham.Items.Add("Hàm bậc hai trên bậc nhất");
cob_chonham.Items.Add("Hàm bậc nhất trên bậc nhất");
Trang 6Mã Code của chức năng Khảo sát là:
Trang 7Mã code của chức năng Các bước khảo sát là:
privatevoid btlythuyet_Click(object sender, EventArgs e)
Trang 9Mã code của chức năng Ví dụ minh họa là:
privatevoid button3_Click(object sender, EventArgs e)
Trang 10Tương tự cho chức năng Bài tập:
Mã code của chức năng Bài tập:
privatevoid button2_Click(object sender, EventArgs e)
Trang 12Mã code của chức năng vẽ đồ thị:
privatevoid vedothi()
{
if (dk == true)//Khi các điều kiện thỏa mãn
{
grb_chucnang.Enabled = true;
Pen pen = new Pen(Color.Magenta, 1);
min = -x0 / k - 1;//Giá trị min của trục hoành
max = x0 / k + 1;//Giá trị max của trục hoành
Trang 14if (fx1 * fx2 > 0 && Math.Abs((int)(fx1 - fx2)) < k)
g.DrawLine(pen, x1, y1, x2, y2);
Trang 15if (cob_chonham.Text == "Hàm bậc nhất trên bậc nhất")
if (fx1 * fx2 > 0 && Math.Abs((int)(fx1 - fx2)) < k)
g.DrawLine(pen, x1, y1, x2, y2);
Trang 16Mã code của các chức năng trên là:
Trang 17{
anhien3 = (!anhien3);
PaintGraph();
}
Trang 182 Ngoài ra còn một số nội dung các hàm vẽ đồ thị:
MessageBox.Show("Giá trị của a phải khác 0", "Chú ý",
MessageBox.Show("Giá trị của a phải khác 0", "Chú ý",
Trang 19MessageBoxButtons.OK, MessageBoxIcon.Warning);
MessageBox.Show("Điều kiện a*d-b*c phải khác 0",
MessageBox.Show("Giá trị của a phải khác 0", "Chú ý",
MessageBox.Show("Giá trị của a phải khác 0", "Chú ý",
dk = false;
}
else
Trang 20{
dk = true;
if (a * d == 0)
{
MessageBox.Show("Điều kiện a*d phải khác 0", "Chú
Pen pen = newPen(Color.Black, 2);
// Vẽ trục tung và trục hoành
g.DrawLine(pen, 0, y0, maxx, y0);
g.DrawLine(pen, x0, 0, x0, maxy);
Font f = newFont("Tahoma", 10);
Brush br = newSolidBrush(Color.Red);
//Vẽ biểu tượng O,X,Y,mũi tên của trục tung và trục hoành
g.DrawString("O", f, br, x0 - 15, y0);
g.DrawString("X", f, br, maxx - 15, y0);
g.DrawString("Y", f, br, x0 + 3, 1);
Brush br1 = newSolidBrush(Color.Black);
Font f1 = new Font("Tahoma", 13);
g.DrawString("^", f1, br1, x0 - 9, -5);
g.DrawString(">", f1, br1, maxx - 13, y0 - 12);
Pen pen_x = newPen(Color.Gray, 1);
int i;
Trang 21//Vẽ các đường vạch điểm của các trục
for (i= x0 + k; i < maxx; i += k)
Pen pen_x = newPen(Color.Gray, 1);
Font f = newFont("Tahoma", 10);
Brush br = newSolidBrush(Color.Red);
Trang 235 Hàm vẽ tiệm cận:
void vetiemcan()
{
Pen pen = new Pen(Color.Red, 1);
if (cob_chonham.Text == "Hàm bậc nhất trên bậc nhất")
{
//Vẽ tiệm cận đứng
g.DrawLine(pen, x0 - (float)(k * d / c), 0, x0 - (float)(k * d / c), maxy);
//Vẽ tiệm cận ngang
g.DrawLine(pen, 0, (float)(y0 - (k * a / c)), maxx, (float)(y0 - (k *
a / c)));
//Hiện lable thông báo các đường tiệm cận
lbtiemcan.Text = "Tiệm cận đứng: x=" + (-d / c) + " Tiệm cận ngang: y=" + (a / c);
}
if (cob_chonham.Text == "Hàm bậc hai trên bậc nhất")
{
//Vẽ tiệm cận đứng
g.DrawLine(pen, (float)(x0 - (k * e / d)), 0, (float)(x0 - (k * e / d)),maxy);
Trang 24a2 = a / d;//Tính hệ số a của tiệm cận xiên
b2 = (b - e * a2) / d;//Tính hệ số b của tiệm cận xiên
//Vẽ tiệm cận xiên
g.DrawLine(pen, x0 + k * min, y0 - (float)(k * (a2 * min + b2)), x0 + k * max, y0 - (float)(k * (a2 * max + b2)));
//Hiện lable thông báo các đường tiệm cận
if (a2 == 1) lbtiemcan.Text = "Tiệm cận đứng: x=" + (-e / d) + " Tiệm cận xiên: y=x+" + b2;
else lbtiemcan.Text = "Tiệm cận đứng: x=" + (-e / d) + " Tiệm cận xiên: y=" + a2 + "*x+" + b2;
}
}
6 Hàm nhập giá trị tiếp điểm để vẽ tiếp tuyến:
privatevoid nhapxt()
MessageBox.Show("Không được bỏ trống các giá trị",
MessageBox.Show("Giá trị nhập vào phải là số", "Chú ý",
tbtieptuyen.Text = "";
Trang 25Pen pen = newPen(Color.Blue, 1);
lbtieptuyen.Location = newPoint(lbtiemcan.Location.X +
lbtieptuyen.Text = " Phương trình tiếp tuyến tại x = " +
xt + " là y=" + yt2 + "*x" + "+" + (-yt2 * xt + yt1);
g.DrawLine(pen, x0 + k * min, y0 - (float)(k * (yt2 * (min
- xt) + yt1)), x0 + k * max, y0 - (float)(k * (yt2 * (max - xt) + yt1))); lbtieptuyen.Text = " Phương trình tiếp tuyến tại x = " +
Trang 26xt + " là y=" + yt2 + "*x" + "+" + (-yt2 * xt + yt1);
g.DrawLine(pen, x0 + k * min, y0 - (float)(k * (yt2 * (min
- xt) + yt1)), x0 + k * max, y0 - (float)(k * (yt2 * (max - xt) + yt1))); lbtieptuyen.Text = " Phương trình tiếp tuyến tại x = " +
xt + " là y=" + yt2 + "*x" + "+" + (-yt2 * xt + yt1);
g.DrawLine(pen, x0 + k * min, y0 - (float)(k * (yt2 * (min
- xt) + yt1)), x0 + k * max, y0 - (float)(k * (yt2 * (max - xt) + yt1))); lbtieptuyen.Text = " Phương trình tiếp tuyến tại x = " +
xt + " là y=" + yt2 + "*x" + "+" + (-yt2 * xt + yt1);
g.DrawLine(pen, x0 + k * min, y0 - (float)(k * (yt2 * (min
- xt) + yt1)), x0 + k * max, y0 - (float)(k * (yt2 * (max - xt) + yt1))); lbtieptuyen.Text = " Phương trình tiếp tuyến tại x = " +
xt + " là y=" + yt2 + "*x" + "+" + (-yt2 * xt + yt1);
Trang 27PicPaint.Refresh();
vetructoado();
vedothi();
if (anhien1 == true) anhienso();
if (anhien2 == true) veduongluoi();
if (anhien3 == true) vetiemcan();
Để gọi các hàm vẽ đồ họa
t ToolTip Để tạo text ghi chú cho các button
a, b, c, d, e double Biến dùng để nhập các hệ số a,b,c,d,e
của hàm
maxx, maxy Int Giá trị chiều Width và Height của
picturemin,max Int Giá trị điểm min max trên trục hoànhx0, y0 Int Tọa độ của gốc tọa độ trên pictureboxX1,y1,x2,y2 Int Tọa độ điểm 1 và điểm 2 nằm trên đồ thị
hàm số
k Int Độ phóng của đồ thị (mặc định k=80)fx1, fx2 Double Giá trị của hàm số tại x1, x2
a2, b2 Double Giá trị hệ số đường tiệm cận xiên của
hàm bậc 2 trên bậc nhất Dạng y=a*x+bAnhien1,anhien2,
anhien3,anhien4,
dk
Bool Các điều kiện để cho phép thực hiện các
sự kiện
Anh,anh1 Bitmap Để load ảnh ra picturebox hàm, và
picturebox nội dung khảo sát
Trang 28Bảng 2:
STT Các điều khiển
thông dụng
Ý nghĩa
1 ComboBox Dùng để trình bày danh sách phần tử là
chuỗi hay đối tượng là các giá trị và nhãn
có thể thay đổi (Trong phần mềm thì
ComboBox dùng để chọn hàn)
2 RadioButton Cho phép người dùng chọn một trong hai
giá trị true/ false hay yes/ no chỉ cho phép chọn một trong danh sách tùy chọn.( Trong
phần mềm chỉ được chọn khảo sát hoặc vẽ)
3 Picturebox có nhiệm vụ hiển thị hình ảnh (Trong phần
mềm dùng để hiển thị nội dung và để vẽ cáchàm số.)
4 Button Cho phép người sử dụng dùng chuột nhấn
vào điều khiển để thực hiện một công việc nào đó.( Trong phần mềm dùng để chọn các
chức năng như vẽ, lưu, tạo mới,phóng to , thu nhỏ, di chuyển đồ thị lên trên, xuống dưới, về trung tâm…)
5 Label Dùng để trình bày dữ liệu, chú giải cho các
nhập liệu khác.( Trong phần mềm dùng để hiển thị các hệ số a, b,c, d, e, x)
6 TextBox Dùng để nhập Dữ Liệu( Trong phần mềm
dùng để nhập hệ số hàm)
Trang 29Tài liệu tham khảo
1 Giáo trình đồ họa máy tính_ Trường ĐHCN Hà Nội.
2 Giáo trình đồ họa máy tính_ Trường Học Viện Bưu Chính Viễn Thông.
3 Sách Giáo Khoa Đại số 12_Bộ Giáo Dục Đào Tạo.
4 TaiLieu.vn (Sách Giáo Khoa Đại số 12).
5 Lập trình WinForm với C#
6 Bài Giảng của Giáo viên bộ môn.
Trang 30Tổng kết :
Việc thực hiện đề tài đã giúp nhóm chúng em hiểu biết thêm nhiềukiến thức mới đặc biệt là có thêm nhiều kiến thức cho môn Đồ Họa MáyTính Đây là bài tập thực tiễn giúp chúng em có thêm nhiều kinh nghiệmcho bản thân cũng như kỹ năng hoạt động nhóm
Trong quá trình tìm hiểu và hoàn thành đề tài nhóm 2 Chúng em xin
chân thành cảm ơn cô giáo - Th.S Vũ Minh Yến đã hướng dẫn và tạo điều kiện chúng em hoàn thành bài tập lớn “ĐỒ HỌA MÁY TÍNH” của
mình
Do trình độ và thời gian còn hạn chế bài tập lớn của chúng emkhông tránh khỏi những thiếu sót về tình thẩm mĩ cũng như các chứcnăng của phần mềm Chúng em rất mong nhận được sự góp ý kiến củathầy cô giáo và các bạn để một ngày nào đó không xa phần mềm củachúng em được hoàn thiện có thể đưa vào ứng dụng giúp các bạn họcsinh cấp III giải quyết được những bài toán khảo sát và vẽ đồ thị hàm sốphức tạp
Chúng em xin chân thành cảm ơn!
Hà nội, ngày 1 tháng 6 / 2011
Nhóm thực hiện
Nhóm 2 – CĐ Tin 1 – K11