Пятница, 14.06.2024, 04:37
Информатика и математика в Плесской школе
Приветствую Вас Гость | RSS
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

Программа нахождения четвертой вершины параллелограмма.

Эта небольшая программа появилась из хорошо известной задачи: Известно, что точки с координатами (x1, y1), (x2, y2), (x3, y3) являются тремя вершинами некоторого параллелограмма. Найти координаты четвертой вершины. 

С точки зрения математики возможны три случая. 1 - 3 точки являются диагональю, 2 - 3 точки являются диагональю, и 1 - 2 точки являются диагональю. Эти случаи и реализованы в программе. Находятся координаты середины диагонали. И зная эти координаты можно вычислить  неизвестную вершину. Для этого достаточно знать две формулы:

XC = (X1+X2)/2    и   YC=(Y1+Y2)/2  

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;

 

namespace Вершины_параллелограмма

{

public partial class Form1 : Form

{

int x1, x2, x3, y1, y2, y3,a,b,xc,yc;

 

 

public Form1()

{

InitializeComponent();

}

 

private void button2_Click(object sender, EventArgs e)

{

this.Close();

}

 

private void button1_Click(object sender, EventArgs e)

{

x1 = Convert.ToInt32(textBox1.Text);

y1 = Convert.ToInt32(textBox2.Text);

x2 = Convert.ToInt32(textBox3.Text);

y2 = Convert.ToInt32(textBox4.Text);

x3 = Convert.ToInt32(textBox5.Text);

y3 = Convert.ToInt32(textBox6.Text);

int k = comboBox1.SelectedIndex;

int m = 10;

if (k == 0) m = 10;

if (k == 1) m = 20;

if (k == 2) m = 50;

if (k == 3) m = 100;

 

// инициализируем графику

Graphics g = Graphics.FromHwnd(pictureBox1.Handle);

//очищаем поле для рисованиия

g.Clear(Color.White);

for (int i = 0; i < 600; i = i + m) g.DrawLine(new Pen(Color.DarkSeaGreen, 1), i, 0, i, 600);

for (int i = 0; i < 600; i = i + m) g.DrawLine(new Pen(Color.DarkSeaGreen, 1), 0, i, 600, i);

g.DrawLine(new Pen(Color.Blue, 1), 300, 0, 300, 600);

g.DrawLine(new Pen(Color.Blue, 1), 0, 300, 600, 300);

y1 = -y1;

y2 = -y2;

y3 = -y3;

xc = (x1 + x3) / 2;

yc = (y1 + y3) / 2;

a = 2 * xc - x2;

b = 2 * yc - y2;

textBox12.Text = Convert.ToString(a);

textBox11.Text = Convert.ToString(-b);

g.DrawLine(new Pen(Color.Red, 2), x1 * m + 300, y1 * m + 300, x2 * m + 300, y2 * m + 300);

g.DrawLine(new Pen(Color.Red, 2), x2 * m + 300, y2 * m + 300, x3 * m + 300, y3 * m + 300);

g.DrawLine(new Pen(Color.Red, 2), x1 * m + 300, y1 * m + 300, a * m + 300, b * m + 300);

g.DrawLine(new Pen(Color.Red, 2), x3 * m + 300, y3 * m + 300, a * m + 300, b * m + 300);

Font f = new System.Drawing.Font("Times New Roman", 12, System.Drawing.FontStyle.Bold);

// устанавливаем цвет

SolidBrush f1 = new SolidBrush(Color.Green);

// выводим надписи

g.DrawString("Случай 1", f, f1, a * m + 300, b * m + 300);

g.DrawString("1", f, f1, x1 * m + 300, y1 * m + 300);

g.DrawString("2", f, f1, x2 * m + 300, y2 * m + 300);

g.DrawString("3", f, f1, x3 * m + 300, y3 * m + 300);

}

 

private void button3_Click(object sender, EventArgs e)

{

x1 = Convert.ToInt32(textBox1.Text);

y1 = Convert.ToInt32(textBox2.Text);

x2 = Convert.ToInt32(textBox3.Text);

y2 = Convert.ToInt32(textBox4.Text);

x3 = Convert.ToInt32(textBox5.Text);

y3 = Convert.ToInt32(textBox6.Text);

int k = comboBox1.SelectedIndex;

int m = 10;

if (k == 0) m = 10;

if (k == 1) m = 20;

if (k == 2) m = 50;

if (k == 3) m = 100;

 

// инициализируем графику

Graphics g = Graphics.FromHwnd(pictureBox1.Handle);

//очищаем поле для рисованиия

g.Clear(Color.White);

for (int i = 0; i < 600; i = i + m) g.DrawLine(new Pen(Color.DarkSeaGreen, 1), i, 0, i, 600);

for (int i = 0; i < 600; i = i + m) g.DrawLine(new Pen(Color.DarkSeaGreen, 1), 0, i, 600, i);

g.DrawLine(new Pen(Color.Blue, 1), 300, 0, 300, 600);

g.DrawLine(new Pen(Color.Blue, 1), 0, 300, 600, 300);

y1 = -y1;

y2 = -y2;

y3 = -y3;

 

xc = (x2 + x3) / 2;

yc = (y2 + y3) / 2;

a = 2 * xc - x1;

b = 2 * yc - y1;

textBox10.Text = Convert.ToString(a);

textBox9.Text = Convert.ToString(-b);

g.DrawLine(new Pen(Color.Blue, 2), x1 * m + 300, y1 * m + 300, x2 * m + 300, y2 * m + 300);

g.DrawLine(new Pen(Color.Blue, 2), x2 * m + 300, y2 * m + 300, a * m + 300, b * m + 300);

g.DrawLine(new Pen(Color.Blue, 2), x3 * m + 300, y3 * m + 300, a * m + 300, b * m + 300);

g.DrawLine(new Pen(Color.Blue, 2), x1 * m + 300, y1 * m + 300, x3 * m + 300, y3 * m + 300);

Font f = new System.Drawing.Font("Times New Roman", 12, System.Drawing.FontStyle.Bold);

// устанавливаем цвет

SolidBrush f1 = new SolidBrush(Color.Green);

// выводим надписи

g.DrawString("Случай 2", f, f1, a * m + 300, b * m + 300);

g.DrawString("1", f, f1, x1 * m + 300, y1 * m + 300);

g.DrawString("2", f, f1, x2 * m + 300, y2 * m + 300);

g.DrawString("3", f, f1, x3 * m + 300, y3 * m + 300);

 

}

 

private void button4_Click(object sender, EventArgs e)

{

x1 = Convert.ToInt32(textBox1.Text);

y1 = Convert.ToInt32(textBox2.Text);

x2 = Convert.ToInt32(textBox3.Text);

y2 = Convert.ToInt32(textBox4.Text);

x3 = Convert.ToInt32(textBox5.Text);

y3 = Convert.ToInt32(textBox6.Text);

int k = comboBox1.SelectedIndex;

int m = 10;

if (k == 0) m = 10;

if (k == 1) m = 20;

if (k == 2) m = 50;

if (k == 3) m = 100;

 

// инициализируем графику

Graphics g = Graphics.FromHwnd(pictureBox1.Handle);

//очищаем поле для рисованиия

g.Clear(Color.White);

for (int i = 0; i < 600; i = i + m) g.DrawLine(new Pen(Color.DarkSeaGreen, 1), i, 0, i, 600);

for (int i = 0; i < 600; i = i + m) g.DrawLine(new Pen(Color.DarkSeaGreen, 1), 0, i, 600, i);

g.DrawLine(new Pen(Color.Blue, 1), 300, 0, 300, 600);

g.DrawLine(new Pen(Color.Blue, 1), 0, 300, 600, 300);

y1 = -y1;

y2 = -y2;

y3 = -y3;

 

xc = (x1 + x2) / 2;

yc = (y1 + y2) / 2;

a = 2 * xc - x3;

b = 2 * yc - y3;

textBox7.Text = Convert.ToString(a);

textBox8.Text = Convert.ToString(-b);

g.DrawLine(new Pen(Color.Green, 2), x1 * m + 300, y1 * m + 300, x3 * m + 300, y3 * m + 300);

g.DrawLine(new Pen(Color.Green, 2), x1 * m + 300, y1 * m + 300, a * m + 300, b * m + 300);

g.DrawLine(new Pen(Color.Green, 2), x2 * m + 300, y2 * m + 300, a * m + 300, b * m + 300);

g.DrawLine(new Pen(Color.Green, 2), x2 * m + 300, y2 * m + 300, x3 * m + 300, y3 * m + 300);

Font f = new System.Drawing.Font("Times New Roman", 12, System.Drawing.FontStyle.Bold);

// устанавливаем цвет

SolidBrush f1 = new SolidBrush(Color.Blue);

// выводим надписи

g.DrawString("Случай 3", f, f1, a * m + 300, b * m + 300);

g.DrawString("1", f, f1, x1 * m + 300, y1 * m + 280);

g.DrawString("2", f, f1, x2 * m + 300, y2 * m + 300);

g.DrawString("3", f, f1, x3 * m + 300, y3 * m + 300);

}

}

}

 

Поиск
Календарь
«  Июнь 2024  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Учительский портал
    Copyright MyCorp © 2024