КулЛиб - Классная библиотека! Скачать книги бесплатно
Всего книг - 712077 томов
Объем библиотеки - 1398 Гб.
Всего авторов - 274359
Пользователей - 125036

Новое на форуме

Новое в блогах

Впечатления

DXBCKT про Дамиров: Курсант: Назад в СССР (Детективная фантастика)

Месяца 3-4 назад прочел (а вернее прослушал в аудиоверсии) данную книгу - а руки (прокомментировать ее) все никак не доходили)) Ну а вот на выходных, появилось время - за сим, я наконец-таки сподобился это сделать))

С одной стороны - казалось бы вполне «знакомая и местами изьезженная» тема (чуть не сказал - пластинка)) С другой же, именно нюансы порой позволяют отличить очередной «шаблон», от действительно интересной вещи...

В начале

  подробнее ...

Рейтинг: +1 ( 1 за, 0 против).
DXBCKT про Стариков: Геополитика: Как это делается (Политика и дипломатия)

Вообще-то если честно, то я даже не собирался брать эту книгу... Однако - отсутствие иного выбора и низкая цена (после 3 или 4-го захода в книжный) все таки "сделали свое черное дело" и книга была куплена))

Не собирался же ее брать изначально поскольку (давным давно до этого) после прочтения одной "явно неудавшейся" книги автора, навсегда зарекся это делать... Но потом до меня все-таки дошло что (это все же) не "очередная злободневная" (читай

  подробнее ...

Рейтинг: +1 ( 1 за, 0 против).
DXBCKT про Москаленко: Малой. Книга 3 (Боевая фантастика)

Третья часть делает еще более явный уклон в экзотерику и несмотря на все стсндартные шаблоны Eve-вселенной (базы знаний, нейросети и прочие девайсы) все сводится к очередной "ступени самосознания" и общения "в Астралях")) А уж почти каждодневные "глюки-подключения-беседы" с "проснувшейся планетой" (в виде галлюцинации - в образе симпатичной девчонки) так и вообще...))

В общем герою (лишь формально вникающему в разные железки и нейросети)

  подробнее ...

Рейтинг: +1 ( 1 за, 0 против).
Влад и мир про Черепанов: Собиратель 4 (Боевая фантастика)

В принципе хорошая РПГ. Читается хорошо.Есть много нелогичности в механике условий, заданных самим же автором. Ну например: Зачем наделять мечи с поглощением душ и забыть об этом. Как у игрока вообще можно отнять душу, если после перерождении он снова с душой в своём теле игрока. Я так и не понял как ГГ не набирал опыта занимаясь ремеслом, особенно когда служба якобы только за репутацию закончилась и групповое перераспределение опыта

  подробнее ...

Рейтинг: 0 ( 0 за, 0 против).
pva2408 про Зайцев: Стратегия одиночки. Книга шестая (Героическое фэнтези)

Добавлены две новые главы

Рейтинг: +2 ( 2 за, 0 против).

Спутниковые программы [Сергей Вячеславович Хвощев глобус] (pdf) читать постранично

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

Спутниковые программы
1. Тахеосъемка

Кнопка записать записывает координаты и описание во второй мемо.
Кнопка отправить отправляет через выбранную программу.
procedure Preobr(Aa, Ab, Ea, Eb, B, Lat, H, dx, dy, dz, wx, wy, wz, mm: double);
var
a, e2, da, de2, M, n: double;

begin
a := (Ab + Aa) / 2;
e2 := (sqr(Eb) + sqr(Ea)) / 2;
da := Ab - Aa;
de2 := sqr(Eb) - sqr(Ea);
M := a * (1 - e2) * Power((1 - e2 * sqr(sin(B))), -3 / 2);
n := a * Power((1 - e2 * sqr(sin(B))), -1 / 2);
dB := p / (M + H) * ((n / a) * e2 * sin(B) * cos(B) * da +
(sqr(n) / sqr(a) + 1) * n * sin(B) * cos(B) * (de2 / 2) (dx * cos(L) + dy * sin(L)) * sin(B) + dz * cos(B)) - wx * sin(L) *
(1 + e2 * cos(2 * B)) + wy * cos(L) * (1 + e2 * cos(2 * B)) - p * mm * e2 *
sin(B) * cos(B);
dL := (p / ((n + H) * cos(B))) * (-dx * sin(L) + dy * cos(L)) + tan(B) *
(1 - e2) * (wx * cos(L) + wy * sin(L)) - wz;
dH := (-a / n) * da + n * sqr(sin(B)) * (de2 / 2) + (dx * cos(L) + dy * sin(L)
) * cos(B) + dz * sin(B) - n * e2 * sin(B) * cos(B) *
((wx / p) * sin(L) - (wy / p) * cos(L)) + (sqr(a) / n + H) * mm;
end;
// из ВГС в СК
procedure TForm1.WGS_SK;
begin
Lat := DegToRad(Lat);
Lon := DegToRad(Lon);
Preobr(6378137, 6378136, 1 / 298.257223563, 1 / 298.25784, Lat, Lon, Heig,
1.08, 0.27, 0.9, 0, 0, 0.16, 0.12E-6); // из ВГС в ПЗ
dB := dB / 3600;
dL := dL / 3600;
Lat := RadToDeg(Lat) + dB;
Lon := RadToDeg(Lon) + dL;
Heig := LocationSensor1.Sensor.Altitude; // Heig + dH;
Lat := DegToRad(Lat);
Lon := DegToRad(Lon);
Preobr(6378136, 6378245, 1 / 298.25784, 1 / 298.3, Lat, Lon, Heig, -25.9,
130.94, 81.76, 0, 0, 0, 0); // из ПЗ в СК 95
dB := dB / 3600;
dL := dL / 3600;
Lat := RadToDeg(Lat) + dB;
Lon := RadToDeg(Lon) + dL;
Heig := Heig + dH;
B := Lat;
L := Lon;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
F1 := LocationSensor1.Sensor.Latitude;
L1 := LocationSensor1.Sensor.Longitude;
WGS_SK(F1, L1, LocationSensor1.Sensor.Altitude);
SK_Pr(B, L);

x1 := x;
y1 := y;
Memo2.Lines.Add(FloatToStrF(x1, ffFixed, 10, 1)+' '+
FloatToStrF(y1, ffFixed, 10, 1)+' '+
Memo1.Text);
end;
procedure TForm1.LocationSensor1LocationChanged(Sender: TObject;
const OldLocation, NewLocation: TLocationCoord2D);
begin
Label1.Text:=NewLocation.Latitude.ToString;
Label2.Text:=NewLocation.Longitude.ToString;
end;
procedure TForm1.ShowShareSheetAction1BeforeExecute(Sender: TObject);
begin
ShowShareSheetAction1.TextMessage:=Memo2.Text;
end;
// в прямоуг
procedure TForm1.SK_Pr;
var
n, cos_sqr_B, a0, a4, a6, a3, a5, B_sek, N_Z, L0: Extended;
begin
Lat := DegToRad(Lat); // Широта в радианах
cos_sqr_B := sqr(cos(Lat));
n := 6399698.902 - (21562.267 - (108.973 - 0.612 * cos_sqr_B) * cos_sqr_B) *
cos_sqr_B;
a0 := 32140.404 - (135.3302 - (0.7092 - 0.004 * cos_sqr_B) * cos_sqr_B) *
cos_sqr_B;
a4 := (0.25 + 0.00252 * cos_sqr_B) * cos_sqr_B - 0.04166;
a6 := (0.166 * cos_sqr_B - 0.084) * cos_sqr_B;
a3 := (0.3333333 + 0.001123 * cos_sqr_B) * cos_sqr_B - 0.1666667;
a5 := 0.0083 - (0.1667 - (0.1968 + 0.004 * cos_sqr_B) * cos_sqr_B) *
cos_sqr_B;
N_Z := Round((Lon + 3) / 6);
L0 := 6 * N_Z - 3;
Lon := (Lon - L0) * 3600;
Lon := Lon / ro;
B_sek := RadToDeg(Lat) * 3600;
x := 6367558.4969 * B_sek / ro - (a0 - (0.5 + (a4 + a6 * sqr(Lon)) * sqr(Lon))
* sqr(Lon) * n) * sin(Lat) * cos(Lat);
y := (1 + (a3 + a5 * sqr(Lon)) * sqr(Lon)) * Lon * n * cos(Lat);
y := 500000 + y;
end;
2. Промер

Координаты заносятся вручную и обрисовываются на планшете. При закрытии программы
сохраняются в четырех текстовых файлах. При запуске программы из этих файлов
считывается информация и рисует на планшете. Кнопка добавить добавляет данные из
введенных в поля. Кнопка удалить удаляет отдельно в каждом поле.
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Add(Edit1.text);
ListBox2.Items.Add(Edit2.text);
ListBox3.Items.Add(Edit3.text);
ListBox4.Items.Add(Edit4.text);
//circle
C := Tcircle.Create(Image1);
C.Parent := Image1;
C.Position.X := Edit3.text.ToSingle;
C.Position.Y := Edit4.text.ToSingle;
C.Width := 10;
C.Height := 10;
//number place
L := TLabel.Create(Image1);
L.Parent := Image1;
L.Position.X := Edit3.text.ToSingle - 10;

L.Position.Y := Edit4.text.ToSingle;
L.text := Edit2.text;
//number galse
L := TLabel.Create(Image1);
L.Parent := Image1;
L.Position.X := Edit3.text.ToSingle;
L.Position.Y := Edit4.text.ToSingle + 10;
if Edit2.Text='1' then L.text := 'г-'+Edit1.text;
// линия
if Edit2.Text '1' then
begin
dx := ListBox3.Items[ListBox3.Count - 1].ToExtended - ListBox3.Items[ListBox3.Count 2].ToExtended;
dy := ListBox4.Items[ListBox4.Count - 1].ToExtended - ListBox4.Items[ListBox4.Count 2].ToExtended;
s := Math.Hypot(dx, dy);
u := RadToDeg(arcsin(dx / s));
if -dy < 0 then
u := 180 - u;
if u < 0 then
u := 360 + u;
Lin := Tline.Create(Image1);
Lin.Parent := Image1;
Lin.Position.x := Edit3.Text.ToSingle+5;
Lin.Position.y := Edit4.Text.ToSingle+5;
Lin.RotationCenter.x := 0;
Lin.RotationCenter.y := 0;
Lin.RotationAngle := u;
Lin.Width := 1;
Lin.Height := s;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ListBox1.Items.Delete(ListBox1.ItemIndex);
ListBox2.Items.Delete(ListBox2.ItemIndex);
ListBox3.Items.Delete(ListBox3.ItemIndex);
ListBox4.Items.Delete(ListBox4.ItemIndex);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ListBox1.Items.SaveToFile('1.txt');
ListBox2.Items.SaveToFile('2.txt');
ListBox3.Items.SaveToFile('3.txt');
ListBox4.Items.SaveToFile('4.txt');
end;
procedure TForm1.FormCreate(Sender: TObject);

var i:integer;
begin
try
ListBox1.Items.LoadFromFile('1.txt');
ListBox2.Items.LoadFromFile('2.txt');
ListBox3.Items.LoadFromFile('3.txt');
ListBox4.Items.LoadFromFile('4.txt');
for i := 0 to ListBox1.Items.Count-1 do
begin
//circle
C := Tcircle.Create(Image1);
C.Parent := Image1;
C.Position.X := ListBox3.Items[i].ToSingle;
C.Position.Y := ListBox4.Items[i].ToSingle;
C.Width := 10;
C.Height := 10;
//number place
L := TLabel.Create(Image1);
L.Parent := Image1;
L.Position.X := ListBox3.items[i].ToSingle - 10;
L.Position.Y := ListBox4.items[i].ToSingle;
L.text := ListBox2.Items[i];
//number galse
L := TLabel.Create(Image1);
L.Parent := Image1;
L.Position.X := ListBox3.Items[i].ToSingle;
L.Position.Y := ListBox4.Items[i].ToSingle + 10;
if ListBox2.Items[i]='1' then L.text := 'г-'+ListBox1.Items[i];
// линия
if ListBox2.Items[i] '1' then
begin
dx := ListBox3.Items[ListBox3.Count - 1].ToExtended - ListBox3.Items[ListBox3.Count 2].ToExtended;
dy := ListBox4.Items[ListBox4.Count - 1].ToExtended - ListBox4.Items[ListBox4.Count 2].ToExtended;
s := Math.Hypot(dx, dy);
u := RadToDeg(arcsin(dx / s));
if -dy < 0 then
u := 180 - u;
if u < 0 then
u := 360 + u;
Lin := Tline.Create(Image1);
Lin.Parent := Image1;
Lin.Position.x := ListBox3.Items[i].ToSingle+5;
Lin.Position.y := ListBox4.Items[i].ToSingle+5;
Lin.RotationCenter.x := 0;
Lin.RotationCenter.y := 0;
Lin.RotationAngle := u;
Lin.Width := 1;
Lin.Height := s;

end;
end;
finally
end;
3. Промер.
Лучше предыдущей написан на библиотеке vsl. Создание графических примитивов
поддерживается на канве компонента Image. На fairmanke не получилось с линиями. А
здесь поддерживается из начальной точки в конечную.

procedure TForm1.Button1Click(Sender: TObject);
var
x1, y1, x2, y2, xLine1, yLine1, xLine2, yLine2: integer;
begin
x1 := StrToInt(Edit3.Text);
y1 := StrToInt(Edit4.Text);
x2 := StrToInt(Edit3.Text) + 10;
y2 := StrToInt(Edit4.Text) + 10;
Image1.Canvas.Ellipse(x1-5, y1-5, x2-5,