Задача на стереометрию со звездочкой

Поскольку мне сказали все математики обожают стереометрию, я не могу не обрадовать их таким прекрасным вопросом.

Мне нужно понять как можно посчитать координаты трех точек (трех светлосерых шариков)

image

Дано:

  1. Координаты зеленого шарика (x_0, y_0, z=0) и координаты темно серого (x_1,y_1,z=0). Я понимаю, что для простоты в этом конкретном случае можно их поставить на одну ось (скажем, y=0), но мне нужен не этот случай, а более общая формула.

  2. Если светло серый шарик водород Н, а темно серый углерод С, то нам известны: угол HCH (параметр \phi), угол HC-зеленый шарик (параметр \theta), и расстояние между серым и темно серым шариками (параметр r).

Найти:

Координаты (x_3,y_3,z_3), (x_4,y_4,z_4), (x_5,y_5,z_5)

Я специально расположил 3,4,5 так, что один будет иметь z>0 а два других z<0.

2 симпатии

Придется матрицами поворота всё искать, а зачем тебе это?
P.S. Мне для моей работы это уже приходилось делать как-то раз.

А слушай, вариант. Только надо угол разбить на составляющие относительно осей x,y,z или можно как-то сразу?

хочу экспериментальную геометрию восстановить)

тут вроде так можно(идейно): понять, что атомы 3, 4, 5 H лежат на окружности(через скалярное произдение найти ее светлосерый - зеленый \ast светлосерый -серый), которая перпендикулярна Oxy, потом поставить БОО H_3 на эту окружность и поделить эту окружность на три равные части получить координаты оставшихся двух

А слушай, вариант. Только надо угол разбить на составляющие относительно осей x,y,zx,y,z или можно как-то сразу?

Можно сразу, надо просто пользоваться тогда матрицей поворота вокруг конкретного вектора \vec r

Так вроде проги для строения молекул умеют пересчитывать из xyz в int. Или тебе прям в общем виде нужно?

:thinking:

для 5 можно взять вектор перпендикулярный С-зел в плоскости xy, а для 3/4 какой лучше брать?

блин, кто-то даже скрипт для этого написал)

1 симпатия

Вращение вокруг конкретной оси \vec v(x,y,z) приходится делать просто в несколько этапов:
Cначала поворачиваешь систему так, чтобы эта ось попала на z, потом крутишь вокруг z, потом обратно возвращаешь. Получается что-то типа такого, если я не натупил с тригонометрией и знаками
\begin{gathered} \mathbf{r'} = M_{xz}^T\left(\arccos\left(\frac {z} {\sqrt{x^2+y^2+z^2}} \right)\right)M_{xy}^T\left(-\arcsin\left(\frac {y} {\sqrt{x^2+y^2}} \right)\right)M_z (\alpha) \cdot \\ \cdot M_{xz}\left(\arccos\left(\frac {z} {\sqrt{x^2+y^2+z^2}} \right)\right)M_{xy}\left(-\arcsin\left(\frac {y} {\sqrt{x^2+y^2}} \right)\right) \bf {r} \end{gathered}

Ну или готовой формулой воспользоваться

M(\hat{\mathbf{v}},\theta) = \begin{pmatrix} \cos \theta + (1 - \cos \theta) x^2 & (1 - \cos \theta) x y - (\sin \theta) z & (1 - \cos \theta) x z + (\sin \theta) y \\ (1 - \cos \theta) y x + (\sin \theta) z & \cos \theta + (1 - \cos \theta) y^2 & (1 - \cos \theta) y z - (\sin \theta) x \\ (1 - \cos \theta) z x - (\sin \theta) y & (1 - \cos \theta) z y + (\sin \theta) x & \cos \theta + (1 - \cos \theta) z^2 \end{pmatrix}
3 симпатии

Попробую посчитать, посмотрю.

А другой вопрос, для z-matrix мне нужен двугранный угол. скажем, я знаю углы всех трех последовательных атомов и длины между любыми атомами. Могу я из этих данных восстановить двугранный угол 7-6-2-10?

image

Ну вообще да, надо систему будет писать и решать, но выглядит решабельным.

1 симпатия

быстрым расчетом значение не найти?

Вроде нет, функция зависимости сложная получается. Длина 7-10 зависит нелинейно от угла

2 симпатии