Лістинг програми «Рівняння прямої»
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Tao.FreeGlut;
using Tao.OpenGl;
using Tao.Platform.Windows;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
bool enable = false;
double x0, y0, x1, x2, y1, y2, A, B, C;
public Form1()
{
InitializeComponent();
AnT.InitializeContexts();
}
private void button1_Click(object sender, EventArgs e)
{
int k = int.Parse(textBox6.Text);
x1 = double.Parse(textBox1.Text);
x2 = double.Parse(textBox3.Text);
y1 = double.Parse(textBox2.Text);
y2 = double.Parse(textBox4.Text);
A = y2 - y1; B = x1 - x2; C = y1 * x2 - x1 * y2;
A = Math.Round(A, k); B = Math.Round(B, k); C = Math.Round(C, k);
textBox5.Text =
"(" + A + ")" + "x" + " + " + "(" + B + ")" + "y" + " + " + "(" + C + ")" + " = 0";
enable = true;
}
private void button2_Click(object sender, EventArgs e)
{
double x1, x2, y1, y2, A, B, C;
int k = int.Parse(textBox6.Text);
x1 = double.Parse(textBox1.Text);
x2 = double.Parse(textBox3.Text);
y1 = double.Parse(textBox2.Text);
y2 = double.Parse(textBox4.Text);
A = y2 - y1; B = x1 - x2; C = y1 * x2 - x1 * y2;
A = Math.Round(A, k); B = Math.Round(B, k); C = Math.Round(C, k);
if (C == 0)
textBox7.Text = "Пряма проходить через початок координат :
" + " (" + A + ")" + "x" + " + " + "(" + B + ")" + "y" + " = 0";
if (B == 0 && A != 0)
textBox7.Text = "Пряма паралельна осі OY :
" + " (" + A + ")" + "x" + " + " + "(" + C + ")" + " = 0";
if (C == 0 && B == 0 && A != 0) textBox7.Text = "Дана пряма - рівняння осі ОY : x = 0";
if (A == 0 && B != 0)
textBox7.Text = "Пряма паралельна осі ОХ :
" + " (" + B + ")" + "y" + " + " + "(" + C + ")" + " = 0";
if (A == 0 && B != 0 && C == 0) textBox7.Text = "Пряма - рівняння осі ОХ : y = 0";
}
private void timer1_Tick(object sender, EventArgs e)
{
x0 = 14;
y0 = 14;
if (enable)
{
// очищаємо буфер кольору Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
// очищаємо поточну матрицю Gl.glLoadIdentity();
// встановлюємо поточний колір - червоний
Gl.glColor3f(255, 0, 0); Gl.glBegin(Gl.GL_LINE_LOOP);
Gl.glVertex2d(1, 14); Gl.glVertex2d(28, 14);
// завершаємо режим малювання Gl.glEnd();
Gl.glBegin(Gl.GL_LINE_LOOP); Gl.glVertex2d(14, 1);
Gl.glVertex2d(14, 58);
// завершаємо режим малювання Gl.glEnd();
Gl.glColor3f(0, 0, 0);
Gl.glBegin(Gl.GL_LINE_LOOP);
Gl.glVertex2d(x0 + x1, y0 + y1);
Gl.glVertex2d(x0 + x2, y0 + y2);
// завершаємо режим малювання Gl.glEnd();
// очікуємо кінець візуалізації кадра Gl.glFlush();
// посилаємо сигнал перерисовки елемента AnT. AnT.Invalidate();
}
}
private void Form1_Load(object sender, EventArgs e)
{
// ініціалізація Glut Glut.glutInit();
Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH);
// очитка вікна Gl.glClearColor(255, 255, 255, 1);
// установка порта виводу у відповідності до розмірів елемента anT
Gl.glViewport(0, 0, AnT.Width, AnT.Height);
// налаштування проекції Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
// тепер налаштовуємо корректно 2D ортогональну проекцію
// в залежності від того, яка сторона більше
if ((float)AnT.Width <= (float)AnT.Height)
{
Glu.gluOrtho2D(0.0, 30.0 * (float)AnT.Height / (float)AnT.Width, 0.0, 30.0);
}
else
{
Glu.gluOrtho2D(0.0, 30.0 * (float)AnT.Width / (float)AnT.Height, 0.0, 30.0);
}
Gl.glMatrixMode(Gl.GL_MODELVIEW);
Gl.glLoadIdentity();
}
}
}