Отправляет email-рассылки с помощью сервиса Sendsay

ПрЕдписная биогеография

  Все выпуски  

ПрЕдписная биогеография


Рассылка -- ‘ ПрЕдписная биогеография
Выпуск  -- # 23
Отправлен -- 2011'11'21


» « к//рпь|\|v|1944*27///11\10\8 » // 3601^3*^^23///^^11\10\21 «

Пушкарев С.В. Алгоритм создания рассчетной цифровой карты окружности или Алгоритм рассчета пар координат углов многоугольника, отражающего окружность. = 11\10\8,,,18 , 15.1К (ПВДП)

часть 1 из 2

 

У меня временами возникает необходимость дать четко привязанные и/или состыкованные графические элементы в текстах или на картах. Стандартным способом здесь является использование какой-либо графической программы ( или программы, поддерживающей правку графики, - например, текстовой редактор Word ) с привязкой графики к установленной решетке. Но в моей практике я не помню случая, когда бы это полностью обеспечило привязку и/или стыковку. : Всегда оставались какие-то огрехи, которые приходилось подчищать ( увеличивая разрешение решетки , подгоняя размеры объекта ... ). Часто на это уходит довольно много времени. И приводимый алгоритм предназначен для быстрого создания одного из таких объектов : окружности. Думаю, по его образцу нетрудно будет сделать алгоритмы для иных графических типов. Возможно, я сам это далее сделаю. 

В алгоритме неявно использована программа Excel. : Дерево строилось прямо в электронной таблице. Соответственно , для повторения вы можете просто копировать таблицы из статьи в таблицы Excel’я . ( Кроме последней таблицы : я оставил там только начало и конец. ) Далее нужно будет восстановить формулы по приведенным сверху ( как имена полей ) образцам. При переносе таблицы из Excel’я во Word «подлинные» формулы пропали, будучи замененными своими значениями. Явно использованы геоинформационные системы GeoGraph и ArcView . Неявно использован текстовой редактор Notepad . При необходимости, ( дальнейшее ) преобразование цифровой карты ( и той графики , что будет добавлена , поверх нее ) в собственно графику делается в ArcView так : File -> Export -> Peaceable WMF ( -- но есть и другие форматы ) . Файлы в этом формате далее можно вставлять и во Word , и в PowerPoint . В приведенном шаблоне формата MIF задана только одна линия . При передаче точек , нескольких линий , одного или более полигонов шаблон нужно будет изменить.

В оригинале «изначально» или «структурно» приведенная ниже конструкция является деревом первого уровня ( «дуп» ). Но поскольку прямо внутри него я сделал три прохода ( «п1,,3» = « проходы 1-й, 2-й и 3-й » ), я могу назвать эту конструкцию и алгоритмом. Отмечу лишь, что к первому названию понятие алгоритма подходит меньше , чем ко второму : поскольку результаты первого ( четырехугольник ) и второго ( восьмиугольник ) проходов , все-таки, не вполне тянут на окружность. :-) Проходы – таковы : 1-й – с начала таблицы по шаг « вывод : Ладно. Переживем. » , 2-й – с шага « сделать по типу ..б с шагом 0.25 и для косинуса , и для синуса : » по шаг « открыть во-е ArcView : Все в порядке. », 3-й – с шага « сделать для 64 вершин : » по шаг « результат: Во-е ArcView выглядит как окружность, углы незаметны . Ура! » .

Еще одно отличие моего «фактического» ( в частности, этого ) дупа от моего «фактического» алгоритма – в частом присутствии в дупе «тупиковых» ( «не сработавших» ) ветвей. – Как и в этом дупе. Во много-итОговый алгоритм я тупики , конечно , не включаю. А здесь чистить не стал: дал почти как есть. В оригинале я чаще использовал сокращения. Здесь же – минимально.

Первое название хронологически появилось позже: как предположительно более точное. Я не стал заменять название, а просто добавил новое : предположительно , это должно увеличить «отыскиваемость» прЕдписи.


  11\10\8 22.50  дуп-п1,,3                                                                                                                                                          
 рассчитать пары координат углов многоугольника , отражающего окружность |б|  ].,                                           

 |с| сделать для начала для квадрата ( ромба ) вида « <> » 
 |-| пояснение : Радиус окружности беру = 1 . 

1

0

0

1

-1

0

-1

-1

1

0


 |с|проверить в виде БД в ArcView : похоже, в виде отдельной БД -- нельзя ].[
 |с|сделать как поля и значения

x1

1

y1

0

x2

0

y2

1

x3

-1

y3

0

x4

-1

y4

-1

x5

1

y5

0


 |с| сделать как .gen : romb.gen 

 

 

 = ``3&" , "&``4

бесформульные значения

1

0

1 , 0

1 , 0

0

1

0 , 1

0 , 1

-1

0

-1 , 0

-1 , 0

-1

-1

-1 , -1

-1 , -1

1

0

1 , 0

1 , 0


 |с| открыть во-е GeoGraph 
 |с| преодолеть препятствие :. Я неправильно структуру задал. ].[ 
 |с| исправить 
 || наблюдение : И с нижней точкой ошибся... 
 |с| исправить 
 
 
метка «з»
1
1 0
0 1
-1 0
0 -1
1 0
 END 
 END 
  
 |с| 23.49 записать наблюдение: Ура! Открыл-таки ромб. 
а |с| сохранить как MIF : romb2346.MIF romb2346.MID 
 |-| наблюдение : Сохранил почему-то в папке romb2341 . 
д |с| перекинуть в SHP ].[ .с,пс 
 |с| кинуть ,,а1 во-ю c:\App\ESRI\AV_GIS30\ARCVIEW\BIN32\
 |с| набрать в командной строке и запустить :. mifshape.exe line romb2346 romb2357
 |-| результат : ROMB2357.DBF ROMB2357.SHP ROMB2357.SHX 
 |с| открыть во-е ArcView : То , что нужно . 
 |-| гипотеза : Пожалуй, я могу текст давать как .MIF сразу, - минуя .GEN и GeoGraph ... 
 |с| внести далее .MIF ,,а1 
  

метка «в»

Version 300
Charset "Neutral"
Delimiter ","
CoordSys Earth Projection 1, 0
Columns 1
ID Integer
Data

Pline 5
1 0
0 1
-1 0
0 -1
1 0
Pen (1,2,0)
  
 |-| 11\10\9 0.06 наблюдение : Да, могу. Ничего сложного. 
 |с| задать точки этого ромба как градусы : 
  
 0
 90
 180
 270
 360
 
 |с| сделать для них формулы координат 
 

 

 =COS( ``п )

 

0

1

1

90

-0.4480736

-0.448073616

180

-0.5984601

-0.598460069

270

0.984382

0.984381951

360

-0.2836911

-0.283691091


 |-| наблюдение : Не, не то. 
 |с| исправить 

 

 

 = ``пп * ``п

 =COS( ``п )

0

3.1415927

0

1

0.5

3.1415927

1.570796327

6.126E-17

1

3.1415927

3.141592654

-1

1.5

3.1415927

4.71238898

-1.84E-16

2

3.1415927

6.283185307

1


 |-| наблюдение : Это уже -- лучше , но желательно, что ноль был дан ровно нулем, а не очень малым значением. 
 |\| исправить 

 

 

 =COS( ``п * ПИ() )

б

0

1

б

0.5

6.126E-17

б

1

-1

б

1.5

-1.838E-16

б

2

1


 || наблюдение : Опять не то. 
 |\| исправить 

 

 =COS(РАДИАНЫ( ``п ))

0

1

90

6.126E-17

180

-1

270

-1.838E-16

360

1


 || наблюдение : Хм... Опять не то... 
 || вывод : Ладно. Переживем. 
 |с| сделать по типу ..б с шагом 0.25 и для косинуса , и для синуса : 

 

 =COS( ``п * ПИ() )

 =SIN( ``п * ПИ() )

0

1

0

0.25

0.7071068

0.707106781

0.5

6.126E-17

1

0.75

-0.7071068

0.707106781

1

-1

1.22515E-16

1.25

-0.7071068

-0.707106781

1.5

-1.838E-16

-1

1.75

0.7071068

-0.707106781

2

1

-2.4503E-16


 |с| сделать без формул 

1

0

0.7071068

0.707106781

6.126E-17

1

-0.7071068

0.707106781

-1

1.22515E-16

-0.7071068

-0.707106781

-1.838E-16

-1

0.7071068

-0.707106781

1

-2.4503E-16


г |с| сделать округление до 6-го десятичного знака : 

 

 

 =ОКРУГЛ( ``пп ;6)

 =ОКРУГЛ( ``пп ;6)

1

0

1.000000

0.000000

0.707106781

0.7071068

0.707107

0.707107

6.12574E-17

1

0.000000

1.000000

-0.707106781

0.7071068

-0.707107

0.707107

-1

1.225E-16

-1.000000

0.000000

-0.707106781

-0.7071068

-0.707107

-0.707107

-1.83772E-16

-1

0.000000

-1.000000

0.707106781

-0.7071068

0.707107

-0.707107

1

-2.45E-16

1.000000

0.000000


 |с| сделать .MIF по типу ..в 

Продолжение следует.


В избранное