Re: определение симметрии системы точек

From
Sergiy Kanilo ()
To
Andrey V. Tutukin
Date
2002-12-14T02:54:26Z
Area
RU.ALGORITHMS
From: "Sergiy Kanilo" <skanilo@artannlabs.com>

"Andrey V. Tutukin" <Andrey.V.Tutukin@p71.f14.n5026.z2.fidonet.org> wrote in
message news:1039802512@p71.f14.n5026.z2.ftn...
> Даны декартовы координаты N точек (или атомов). Нужно определить точечную
> группу.
>
> Идею представляю несколько смутно...
> 1) Найти центр масс -- это "уникальная точка", т.е. остаётся на месте при
> применении любых операций симметрии из определяемой группы.
> 2) Поискать главную ось
> 3) Если нет -- плоскость, центр инверсии...
> 4) если есть -- вспомогательную ось...
> и т.д., как в учебниках по молекулярной спектроскопии описано.
>
> Только как найти эти оси да плоскости?

Можно разобраться с плоскостями, а оси - уж как получится :)

Как найти центр масс - наверное понятно, как привести к системе
координат так чтобы центр тяжести соврадал с центром системы
координат тоже понятно.
Теперь допустим каждая точка определена координатой (x,y,z)
Построим для каждой точки матрицу  3x3

x*x x*y x*z
y*x y*y y*z
z*x z*y z*z

и сложим матрицы для всех точек.
Определим собственные вектора и значения этой суммарной
матрицы.
Если все значения различные, то возможны три плоскости
симметрии (с нормалями по собственным векторам)
После того как плоскости найдены надо пройтись по точкам
и проверить наличие для каждой из них симметричной пары
(относительно каждой оси)

Если два из собственных  значений совпадают, может быть
осевая симметрия или симметрия с поворотом вокруг оси
соответствующей собственному вектору для третьего
(несовпадающего) собственного значения.
Тут с проверкой несколько сложнее (так что додумай сам :)

Если три совпадают - это уж вообще черти что :)


Cheers,
Serge

--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)