Кривая Минковского: различия между версиями
Перейти к навигации
Перейти к поиску
[отпатрулированная версия] | [непроверенная версия] |
Содержимое удалено Содержимое добавлено
Hyacinth (обсуждение | вклад) |
Swadim (обсуждение | вклад) |
||
Строка 9: | Строка 9: | ||
* Кривая Минковского не имеет самопересечений. |
* Кривая Минковского не имеет самопересечений. |
||
* Кривая Минковского имеет [[Хаусдорфова размерность|Хаусдорфову размерность]] <math>\ln8/\ln4\ = 3/2</math> (поскольку она состоит из восьми равных частей, каждая из которых подобна всей кривой с коэффициентом [[подобие|подобия]] 1/4). В частности, |
* Кривая Минковского имеет [[Хаусдорфова размерность|Хаусдорфову размерность]] <math>\ln8/\ln4\ = 3/2</math> (поскольку она состоит из восьми равных частей, каждая из которых подобна всей кривой с коэффициентом [[подобие|подобия]] 1/4). В частности, |
||
* Кривая Минковского имеет нулевую [[мера Лебега|меру Лебега]]. |
|||
==Построение== |
==Построение== |
Версия от 08:17, 6 мая 2020
Кривая Минковского — классический геометрический фрактал, предложенный Минковским. Инициатором является отрезок, а генератором является ломаная из восьми звеньев (два равных звена продолжают друг друга) — см. рис.
Свойства
- Кривая Минковского нигде не дифференцируема и не спрямляема.
- Кривая Минковского не имеет самопересечений.
- Кривая Минковского имеет Хаусдорфову размерность (поскольку она состоит из восьми равных частей, каждая из которых подобна всей кривой с коэффициентом подобия 1/4). В частности,
- Кривая Минковского имеет нулевую меру Лебега.
Построение
Пример алгоритма на 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);
?>
Для улучшения этой статьи желательно:
|