1. Вычисление параметров α, с (постоянные проекции):
где φ0 – широта параллели с минимальным масштабом длин. Величины r, lgr, lgu приводятся в [1, прил. 3-5].
Последовательность вычислений представлена в таблице 7.1.
Таблица 7.1
Формулы | φ1= | φ2= |
lgr | ||
lgu | ||
lgr1- lgr2 | ||
lgu2- lgu1 | ||
a | ||
φ0, град | ||
ua | ||
100μ0 | ||
100μ0r ua | ||
a | ||
с, см |
2. Вычисление полярных координат ρ и δ.
Результаты вычислений заносятся в таблицы 7.2 и 7.3:
Таблица 7.2
φ, град | φю | φю+∆φ | φю+2∆φ | … | φс |
ρ, см |
Таблица 7.3
λ, град | λm | λm +∆λ | λm +2∆λ | … | λз |
δ, град |
3. Вычисление прямоугольных координат x, y
, ,
где q= ρю – расстояние между полюсом полярных и началом прямоугольных координат. Результаты вычислений оформляются в виде таблицы 7.4.
Таблица 7.4
φ, град | ρ, см | Координаты x,y, см | λ, град | ||||
λm | λm +∆λ | λm +2∆λ | … | λз | |||
δ, град | |||||||
sinδ | |||||||
cosδ | |||||||
φю | x y | ||||||
φю+∆φ | x y | ||||||
φю+2∆φ | x y | ||||||
… | x y | ||||||
φс | x y |
4. Построение сетки меридианов и параллелей.
Для построения картографической сетки проекции Ламберта необходимо отстроить точки с рассчитанными в таблице координатами x, y. Точки соединяются, как показано на проекции Ламберта. Если координаты точек рассчитаны правильно, то меридианы должны быть прямыми линиями, а параллели – дугами окружностей.
Рис. 7.1. Картографическая сетка проекции Ламберта
5. Вычисления масштабов m,n,p
Результаты вычислений заносятся в таблицу 7.5.
Таблица 7.5
φ, град | ρ, см | αρ | r | (μ0100)r | m,n | p |
φю | ||||||
φю+∆φ | ||||||
φю+2∆φ | ||||||
… | ||||||
φс |
6. Построение графиков изменения m,p
Для построения графиков масштабов длин и площади необходимо вдоль оси абсцисс отложить φ, вдоль оси ординат - m,p. Полученные точки соединяются плавными кривыми, как показано на рисунке. Правильность построения графиков можно проверить так: графики должны пересекаться, если m=p=1, на широтах φ1, φ2.
Программное обеспечение должно по входным данным рассчитать и вывести на экран значения a и с (пункт 1), таблицы (пункт 2), построить сетку меридианов (пункт 4) и график масштабов длин и площади (пункт 6).
Рис. 7.2. График масштабов длин и площади
Таблица 7.6
Задания к пятому разделу
Номер варианта | λз | λв | φю | φс | φ1 | φ2 | μ0 | ∆φ=∆λ |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
1:20000000 | 5° | |||||||
1:20000000 | ||||||||
1:20000000 | ||||||||
1:20000000 | ||||||||
1:20000000 | ||||||||
1:20000000 | ||||||||
1:17000000 | ||||||||
1:17000000 | ||||||||
1:17000000 | ||||||||
1:17000000 | ||||||||
1:15000000 | ||||||||
1:15000000 | ||||||||
1:15000000 | ||||||||
1:15000000 | ||||||||
1:15000000 | ||||||||
1:15000000 | ||||||||
1:13000000 | ||||||||
1:13000000 | ||||||||
1:13000000 | ||||||||
1:13000000 | ||||||||
1:13000000 | ||||||||
1:20000000 | ||||||||
1:20000000 | ||||||||
1:15000000 | ||||||||
1:13000000 | ||||||||
1:13000000 |
Пересчет координат из прямоугольных в экранные:
Program Gr4;
uses graph,crt;
var GraphDriver,GraphMode,ErrorCode:integer;
Ax,Ay,Bx,By:real;
x1,y1,x2,y2:integer;
m,mk:real;
s:string;
BEGIN
writeln('Input M, Ax,Ay,Bx,By');
readln(m,ax,ay,bx,by);
{------------------------}
{Инициализация графического режима}
InitGraph(GraphDriver,GraphMode,'');
Errorcode:=GraphResult;
if ErrorCode<>grok then begin
Writeln('Error');
Exit;
end;
{------------------------}
str(m:5:2,s);
OuttextXY(10,10,'Scale='+s);
mk:=640/m;
x1:=round(ax*mk);
x2:=round(bx*mk);
y1:=round(480-ay*mk);
y2:=round(480-by*mk);
line(x1,y1,x2,y2);
circle(x1,y1,2);
circle(x2,y2,2);
SetLineStyle(2,0,1);
line(x1,y1,0,y1);
str(ay:5:2,s);
OutTextXY(0,y1+1,s);
line(x1,y1,x1,480);
str(ax:5:2,s);
OutTextXY(x1,470,s);
line(x2,y2,0,y2);
str(by:5:2,s);
OutTextXY(0,y2+1,s); Рис. 7.3
line(x2,y2,x2,480);
str(bx:5:2,s);
OutTextXY(x2,470,s);
{------------------------}
readkey;
CloseGraph;
END.
Построение осей и координатной сетки:
Program Graphic;
uses graph,crt;
var GraphDriver,GraphMode,ErrorCode:integer;
m:integer;
a,b,dx,x,y,min,max:real;
s:string;
function F(x:real):real;
begin
F:=x*x-2*x-1; {Функция}
end;
BEGIN
writeln('Input A,B,dX');
readln(a,b,dx);
x:=a;
y:=F(x);
min:=y; max:=y;
while x<b do
begin
y:=F(x);
x:=x+dx;
if y>max then max:=y;
if y<min then min:=y;
end;
{------------------------}
{Инициализация графического режима}
InitGraph(GraphDriver,GraphMode,'');
Errorcode:=GraphResult;
if ErrorCode<>grok then begin
Writeln('Error');
Exit;
end;
{------------------------}
{Расчет масштабных коэффициентов}
if min>0 then min:=-1;
if (min<a)and(min<0) then min:=a-1;
m:=round(GetMaxX/(b-a));
x:=a;
{Построение линий сетки и координатных осей}
setlinestyle(0,0,1);
MoveTo(-round(a*m),0);
LineRel(0,480);
OuttextXY(GetMaxX-10,GetMaxY+round(min*m)+2,'x');
MoveTo(0,GetMaxY+round(min*m));
LineRel(640,0);
OuttextXY(5-round(a*m),0,'y');
setlinestyle(1,0,1);
x:=trunc(a);
while x<b do begin
MoveTo(round((x-a)*m),0);
LineRel(0,480);
str(x:2:0,s);
OuttextXY(round((x-a)*m),GetMaxY+round(min*m)+2,s);
x:=x+1;
end;
y:=trunc(min);
while y<max do begin
MoveTo(0,GetMaxY-round((y-min)*m));
LineRel(640,0);
str(y:2:0,s);
OuttextXY(-round(a*m),GetMaxY-round((y-min)*m)+2,s);
y:=y+1;
end;
readkey;
CloseGraph;
END.
ЛИТЕРАТУРА
- Вахрамеева Л.А. Картография. –М.: Недра,1961.
- Методичні вказівки до побудови картографічних сіток прямих рівнокутних циліндричної та конічної проекцій. Укл. М.С.Колчина, О.М.Новікова. –Кривий Ріг: КГРІ, 1994. -16с.
- Азарян А.А. Вычислительная техника, алгоритмизация и программирование: учеб. Пособие, -Кривой Рог: Минерал, 2006. -267с.
ПРИЛОЖЕНИЕ А
Министерство образования Украины
Криворожский технический университет
Кафедра моделирования и программного обеспечения
КУРСОВАЯ РАБОТА
по дисциплине
"Вычислительная техника и программирование"
Выполнил:
ст. гр. ИГ-__
Ф.И.О.
№ зачетной книжки _____
Принял:
Доктор техн. наук, профессор
Азарян А.А.
Работа допущена к защите _____
Защищена с оценкой __________
Кривой Рог – 2013