|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Saniya Mamleeva 2:5011/251.21 16 Sep 2001 18:04:28 To : Valentin Davydov Subject : Re: двумерные экстремумы -------------------------------------------------------------------------------- 15 Сен 01 19:24, you wrote to me: >> Задача: при прохождении по всем пикселям отсортировывать те, в >> пределах которых функция изменяется быстрее всего (в одномерном >> аналоге - в пределах которых находятся локальные экстремумы >> производной, т.е. точки перегиба, где d2/dx2 = 0). Я сейчас всё >> пытаюсь вспомнить двумерный аналог такой второй производной VD> Со вспоминанием двумерного аналога - нет, а кот когда ты его вспомнишь VD> ;-) то с рисованием помогу. Гм, я попыталась его вывести - получилось следующее: нужно найти те точки, в которых grad(F) максимален по модулю, т.е. |grad(F)| перестаёт возрастать и начинает убывать, т.е. не меняется. Т.е. Sqr (d|grad(F)| / dx) + Sqr (d|grad(F)| / dy) < E, E стремится к нулю. Получилось следующее: Sqr (d^2F / dx^2) + Sqr (d^2F / dy^2) + 2*Sqr (d^2F/dx/dy) < E т.е. сумма квадратов всех вторых производных. Вот только как справиться с тем случаем, когда он перестаёт убывать и начинает возрастать, там ведь вторая производная тоже ноль... А ещё я эту формулу ввела в компьютер, так он всё равно рисует не то, что хотелось бы... может, оттого, что значения производных по х и по у отличаются на порядок... VD> Итак, у тебя есть функция от двух перменных, надо нарисовать линии, VD> по которым она обращается в нуль. Делишь каждый пиксел по диагонали VD> на два треугольника. В вершинах каждого треугольника функция VD> принимает три занчения, так что её можно аппроксимировать линейной VD> функцией (график её будет плоскостью в трёхмерном пространстве). VD> Корни линейной функции составляют прямую и находятся элементароно. VD> Отрезок этой прямой внутри треугольника и надо нарисовать, а они уж VD> сами сложатся в требуемый контур. Особый случай: все три вершины VD> треугольника дают значение 0. Придётся либо закрасить его целиком, VD> либо произвольным образом нарисовать какую-либо фигуру (например, VD> трёхлучевую звёздочку), соединяющую все три вершины. Ой, на самом-то деле всё проще, так как пиксель - он и есть пиксель, и закрашивается полностью, либо не закрашивается вообще. Действительно, замечательный метод, напрасно я про него забываю. Итак, нужно просто вычислять, по какой линии треугольник пересечёт нулевую плоскость, и если эта линия попадает в треуольник, то закрашивать его, так? Однако всё же сперва попробую с Е. Saniya --- * Origin: Весь мир он пробует на зуб... (2:5011/251.21) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/38443ba4ee47.html, оценка из 5, голосов 10
|