- •Перелік скорочень та визначень
- •Розділ і. Теоретичні відомості
- •1.1. Поняття навігації та навігаційної системи. Види нс.
- •1.2. Астрономічні методи навігації.
- •1.3. Радіотехнічні методи навігації.
- •1.4. Сучасні супутникові навігаційні системи.
- •1.5. Візуальні методи навігації.
- •1.6. Метод обчислення координат об'єкту з допомогою фотографування опорних точок.
- •1.7. Математичний опис технології.
- •1.6. Постановка задачі.
- •Розділ іі. Алгоритмізація
- •2.1. Основний алгоритм роботи програми.
- •2.2. Алгоритм математичних розрахунків.
- •Розділ ііі. Кодування
- •3.1. Створення проекту та розташування елементів інтерфейсу програми.
- •3.2. Кодування основної частини програми.
- •3.3. Кодування виводу координатної системи.
- •Розділ іv. Тестування
- •Висновки
- •Список використаної літератури
- •Додатки Додаток а. Файл реалізації aTriangulationDlg.Cpp
- •Додаток б. Файл реалізації Win2Dlg.Cpp
Додаток б. Файл реалізації Win2Dlg.Cpp
// Win2Dlg.cpp : implementation file
//
#include "stdafx.h"
#include "ATriangulation.h"
#include "Win2Dlg.h"
//использование переменных с первого диалогового окна
extern int N;
extern double x, y;
extern double sizeX, sizeY;
extern double *X, *Y;
extern int Index[3];
CString strx;
// CWin2Dlg dialog
IMPLEMENT_DYNAMIC(CWin2Dlg, CDialog)
CWin2Dlg::CWin2Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CWin2Dlg::IDD, pParent) { }
Cwin2Dlg::~CWin2Dlg() { }
void CWin2Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CWin2Dlg, CDialog)
ON_WM_PAINT()
//ON_WM_CTLCOLOR()
ON_WM_CLOSE()
END_MESSAGE_MAP()
// CWin2Dlg message handlers
void CWin2Dlg::OnPaint()
{
double koef=1;
double rsX = sizeX * 100;
double rsY = sizeY * 100;
//изменение размеров окна и координатной системы
if(rsX > 640) {
koef = rsX / 640;
rsX /= koef; rsY /= koef;
}
else
if(rsY > 480) {
koef = rsX / 480;
rsX /= koef; rsY /= koef;
}
//изменение положения и размеров окна
MoveWindow(100, 100, rsX+90, rsY+70, TRUE);
CPaintDC dc(this); // Получить контекст устройства
//рисование координатной системы
dc.Rectangle(40, 30, rsX+40, rsY+30);
//рисование цели измерения и линий к точкам, которые использовались
if(x!=0 && y!=0) {
dc.MoveTo(x*100/koef+40, y*100/koef+30);
dc.LineTo(X[Index[0]]*100/koef+40, Y[Index[0]]*100/koef+30);
dc.MoveTo(x*100/koef+40, y*100/koef+30);
dc.LineTo(X[Index[1]]*100/koef+40, Y[Index[1]]*100/koef+30);
dc.MoveTo(x*100/koef+40, y*100/koef+30);
dc.LineTo(X[Index[2]]*100/koef+40, Y[Index[2]]*100/koef+30);
dc.Ellipse(x*100/koef+30, y*100/koef+20, x*100/koef+50, y*100/koef+40);
strx.Format("X=%.2f; Y=%.2f", x, y);
dc.TextOutA(x*100/koef, y*100/koef, strx);
}
//заполнение координатной системы положениями опорных точек
for(int i=0; i<N; i++) {
dc.Rectangle(X[i]*100/koef+35, Y[i]*100/koef+25, X[i]*100/koef+45, Y[i]*100/koef+35);
strx.Format("%d(%.2f; %.2f)", i, X[i], Y[i]);
dc.TextOutA(X[i]*100/koef, Y[i]*100/koef, strx);
}
}
void CWin2Dlg::OnClose()
{
DestroyWindow();
}