Кривая Минковского: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
добавил источник
м Ссылки: Project talk:Викификатор#Шаблон:Rq, replaced: {{rq|sources}} → {{подст:нет источников}}
 
(не показано 26 промежуточных версий 16 участников)
Строка 1: Строка 1:
'''Кривая Минковского''' — классический геометрический [[фрактал]], предложенный [[Минковский, Герман|Минковским]]. Инициатором является [[отрезок]], а генератором является [[ломаная]] из восьми звеньев (два равных звена продолжают друг друга) — см. рис., где в качестве генератора использован «биполярный скачок»<ref name=slyusarantenna3>{{cite web|last = Слюсар|first = В.|title = Фрактальные антенны. Принципиально новый тип «ломаных» антенн. Часть 2.|work = Электроника: наука, технология, бизнес. — 2007. — № 6.|date = 2007|pages = С. 85.|url = http://www.electronics.ru/files/article_pdf/0/article_611_312.pdf|access-date = 2020-05-06|archive-date = 2018-04-03|archive-url = https://web.archive.org/web/20180403104208/http://www.electronics.ru/files/article_pdf/0/article_611_312.pdf|deadlink = no}}</ref><ref name="wireless">Вишневский В. М., Ляхов А. И., Портной С. Л., Шахнович И. В. Широкополосные беспроводные сети передачи информации. — М.: Техносфера. — 2005.- C. 498—569</ref>
[[Файл:Minkowsky01.gif|right|thumb|300 px|Построение кривой Минковского]]

'''Кривая Минковского''' или '''колбаса<ref>[http://chaostarantula.narod.ru/ToC/1.htm]</ref> Минковского'''
[[Файл:Minkowsky01.gif|Построение кривой Минковского]]<!-- не делайте миниатюрой, миниатюры больших гифок не анимируются-->
— классический геометрический [[фрактал]], предложенный [[Минковский, Герман|Минковским]]. Инициатором является [[отрезок]], а генератором является [[ломаная]] из восьми звеньев (два равных звена продолжают друг друга) — см. рис.
[[Файл:Karperienflakeani2.gif|thumb|Квадратичный остров Коха типа 1 из четырёх кривых Минковского, расположенных в многоугольнике]]
[[Файл:Minkowski island 1-3.svg|thumb|Квадратичный остров Коха типа 2 из четырёх кривых Минковского, расположенных в многоугольнике]]


== Свойства ==
== Свойства ==
Строка 7: Строка 9:
* Кривая Минковского не имеет самопересечений.
* Кривая Минковского не имеет самопересечений.
* Кривая Минковского имеет [[Хаусдорфова размерность|Хаусдорфову размерность]] <math>\ln8/\ln4\ = 3/2</math> (поскольку она состоит из восьми равных частей, каждая из которых подобна всей кривой с коэффициентом [[подобие|подобия]] 1/4). В частности,
* Кривая Минковского имеет [[Хаусдорфова размерность|Хаусдорфову размерность]] <math>\ln8/\ln4\ = 3/2</math> (поскольку она состоит из восьми равных частей, каждая из которых подобна всей кривой с коэффициентом [[подобие|подобия]] 1/4). В частности,
** Кривая Минковского имеет нулевую [[мера Лебега|меру Лебега]].
* Кривая Минковского имеет нулевую [[мера Лебега|меру Лебега]].

== Построение через [[L-система|систему Линденмайера]] ==
: '''переменные''': F
: '''константы''': + &minus;
: '''старт''': F
: '''правило''': (F → F&minus;F+F+FF&minus;F&minus;F+F)
: '''угол''': 90°

Здесь F означают «рисуем отрезок», + означает «повернуть вправо на угол», а &minus; означает «повернуть влево на угол».

== Примеры алгоритма ==
{{Hider|
title = Python|
hidden = 1 |
title-style = text-align: left; |
content-style = text-align: left; |
content =
{{Hider|
title = Пример алгоритма на Python с помощью модуля turtle|
hidden = 1 |
title-style = text-align: left; |
content-style = text-align: left; |
content =
<source lang="Python">
from turtle import *
def start(x: float):
"""This function clears window and make turtle go to start"""
clear()
penup()
x = x if x < 0 else -x
goto(x, 0)
pendown()
def curve_minkowski(length: float, iterations: int):
"""This function draw Minkowski's curve"""
if iterations == 0:
forward(length * 4)
else:
curve_minkowski(length/4, iterations - 1)
left(90)
curve_minkowski(length/4, iterations - 1)
right(90)
curve_minkowski(length/4, iterations - 1)
right(90)
curve_minkowski(length/4, iterations - 1)
curve_minkowski(length/4, iterations - 1)
left(90)
curve_minkowski(length/4, iterations - 1)
left(90)
curve_minkowski(length/4, iterations - 1)
right(90)
curve_minkowski(length/4, iterations - 1)
LENGTH = 100 # длина линии
ITERATION = 3 # номер итерации
start(LENGTH * 2)
curve_minkowski(LENGTH, ITERATION)
exitonclick() # функция чтобы программа не завершалась сразу
</source>
}}
{{Hider|
title = Пример алгоритма на Python с помощью [[L-система|системы Линденмайера]]|
hidden = 1 |
title-style = text-align: left; |
content-style = text-align: left; |
content =
<source lang="python">
import turtle

turtle.hideturtle()
turtle.tracer(0)
turtle.penup()
turtle.setposition(-150, 0)
turtle.pendown()

axiom, tempAx, logic, iterations = 'F', '', {'F': 'F-F+F+FF-F-F+F'}, 3

for i in range(iterations):
for j in axiom:
tempAx += logic[j] if j in logic else j
axiom, tempAx = tempAx, ''

for k in axiom:
if k == '+':
turtle.left(90)
elif k == '-':
turtle.right(90)
else:
turtle.forward(5)

turtle.update()
turtle.mainloop()
</source>
}}
}}
{{Hider|
title = Пример алгоритма на PHP|
hidden = 1 |
title-style = text-align: left; |
content-style = text-align: left; |
content =
<source lang="PHP">
<?php
$i = 2;
$image = imagecreatetruecolor(600, 400);
imagefilledrectangle($image, 0, 0, imagesx($image) - 1, imagesy($image) - 1,
imagecolorresolve($image, 255, 255, 255));
$color = imagecolorresolve($image, 0, 0, 0);

drawMinkowski($image, 0, imagesy($image) / 2, imagesx($image), imagesy($image) / 2, $i, $color);
/**
* Draws minkowski curve between two points.
* @return void
*/
function drawMinkowski($image, $xa, $ya, $xi, $yi, $i, $color) {
if($i == 0)
imageline($image, $xa, $ya, $xi, $yi, $color);
else {
// C---D
// | |
// A---B E H---I
// | |
// F---G
$xb = $xa + ($xi - $xa) * 1/4;
$yb = $ya + ($yi - $ya) * 1/4;

$xe = $xa + ($xi - $xa) * 2/4;
$ye = $ya + ($yi - $ya) * 2/4;
$xh = $xa + ($xi - $xa) * 3/4;
$yh = $ya + ($yi - $ya) * 3/4;

$cos90 = 0;
$sin90 = -1;
$xc = $xb + ($xe - $xb) * $cos90 - $sin90 * ($ye - $yb);
$yc = $yb + ($xe - $xb) * $sin90 + $cos90 * ($ye - $yb);

$xd = $xc + ($xe - $xb);
$yd = $yc + ($ye - $yb);
$sin90 = 1;
$xf = $xe + ($xh - $xe) * $cos90 - $sin90 * ($yh - $ye);
$yf = $ye + ($xh - $xe) * $sin90 + $cos90 * ($yh - $ye);

$xg = $xf + ($xh - $xe);
$yg = $yf + ($yh - $ye);

drawMinkowski($image, $xa, $ya, $xb, $yb, $i - 1, $color);
drawMinkowski($image, $xb, $yb, $xc, $yc, $i - 1, $color);
drawMinkowski($image, $xc, $yc, $xd, $yd, $i - 1, $color);
drawMinkowski($image, $xd, $yd, $xe, $ye, $i - 1, $color);
drawMinkowski($image, $xe, $ye, $xf, $yf, $i - 1, $color);
drawMinkowski($image, $xf, $yf, $xg, $yg, $i - 1, $color);
drawMinkowski($image, $xg, $yg, $xh, $yh, $i - 1, $color);
drawMinkowski($image, $xh, $yh, $xi, $yi, $i - 1, $color);
}
}

header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
</source>
}}


== Примечания ==
== Примечания ==
{{примечания}}
<references />

== Литература ==
* Вишневский В. М., Ляхов А. И., Портной С. Л., Шахнович И. В. Широкополосные беспроводные сети передачи информации. — М.: Техносфера. — 2005.- C. 498—569.

== Ссылки ==
* [http://www.wolframalpha.com/input/?i=minkowski+sausage&a=*C.minkowski+sausage-_*MathWorld-&f2=3&f=MinkowskiSausage.n%5Cu005f3 «Minkowski Sausage» — пример интерактивного построения кривой Минковского]


{{rq|sources|iwiki}}
{{Кривые}}
{{Кривые}}
{{Нет источников |дата=2024-10-20}}


[[Категория:Фрактальные кривые]]
[[Категория:Фрактальные кривые]]
[[Категория:Герман Минковский]]

Текущая версия от 05:34, 20 октября 2024

Кривая Минковского — классический геометрический фрактал, предложенный Минковским. Инициатором является отрезок, а генератором является ломаная из восьми звеньев (два равных звена продолжают друг друга) — см. рис., где в качестве генератора использован «биполярный скачок»[1][2]

Построение кривой Минковского

Квадратичный остров Коха типа 1 из четырёх кривых Минковского, расположенных в многоугольнике
Квадратичный остров Коха типа 2 из четырёх кривых Минковского, расположенных в многоугольнике
  • Кривая Минковского нигде не дифференцируема и не спрямляема.
  • Кривая Минковского не имеет самопересечений.
  • Кривая Минковского имеет Хаусдорфову размерность (поскольку она состоит из восьми равных частей, каждая из которых подобна всей кривой с коэффициентом подобия 1/4). В частности,
  • Кривая Минковского имеет нулевую меру Лебега.
переменные: F
константы: + −
старт: F
правило: (F → F−F+F+FF−F−F+F)
угол: 90°

Здесь F означают «рисуем отрезок», + означает «повернуть вправо на угол», а − означает «повернуть влево на угол».

Примеры алгоритма

[править | править код]

Примечания

[править | править код]
  1. Слюсар, В. Фрактальные антенны. Принципиально новый тип «ломаных» антенн. Часть 2. Электроника: наука, технология, бизнес. — 2007. — № 6. С. 85. (2007). Дата обращения: 6 мая 2020. Архивировано 3 апреля 2018 года.
  2. Вишневский В. М., Ляхов А. И., Портной С. Л., Шахнович И. В. Широкополосные беспроводные сети передачи информации. — М.: Техносфера. — 2005.- C. 498—569

Литература

[править | править код]
  • Вишневский В. М., Ляхов А. И., Портной С. Л., Шахнович И. В. Широкополосные беспроводные сети передачи информации. — М.: Техносфера. — 2005.- C. 498—569.