Участок пересечения 2-х самолетов в Майави - PullRequest
0 голосов
/ 19 мая 2019

Я пытаюсь сделать 2 плоскости, а затем их линию пересечения в майяви.

Уравнение плоскостей

x - 5 * y + 2 * z -11 = 0

3 * x - 2 * y + 3 *z -7 = 0

Линия, где эти две плоскости пересекаются, (я рассчитал это вручную) -

11 * x - 3 * y - 13 * z - 17 = 0

Код

%gui qt
from mayavi import mlab
import numpy as np
mlab.clf()

# first plane
x, y = np.mgrid[-100:100:1000j, -100:10:1000j]
z = (-x+5*y+11)/2
mlab.surf(x,y,z, warp_scale='auto',color=(0.1,0.2,0.3))

# second plane
x, y = np.mgrid[-100:100:1000j, -100:100:1000j]
z = (-3*x+2*y+7)/3
mlab.surf(x,y,z, warp_scale='auto')

# intersection line
x = np.linspace(-1000, 1000, num=4000)
y = np.linspace(-1000, 1000, num=4000)
z = (11*x-3*y-17)/13
mlab.points3d(x, y, z,scale_factor=0.95)

Участок

Imgur

Это последний участок, который я получаю,что явно неправильно.Я не могу найти ошибку здесь.

1 Ответ

0 голосов
/ 27 мая 2019

Здесь есть несколько недоразумений. У вас есть две плоскости с уравнениями x - 5y + 2z -11 = 0 и 3x - 2y + 3z - 7 = 0. Сказать, что линия, где эти две плоскости пересекаются, подчиняется уравнению 11x - 3y - 13z - 17 = 0, это ерунда. Это уравнение плоскости, а не прямой. И даже если искомая линия включена в эту плоскость, как выбрать (x, y, z)?

Подход здесь заключается в том, чтобы отметить, что все (x, y, z), описывающие линию, также описывают плоскости, а затем выражать одну координату в соответствии с другими для одной плоскости и, наконец, вводить ее в уравнение второй плоскости. Это дает

y = (-3x - 19) / 11

z = (-x + 5y + 11) / 2

Используя следующий фрагмент кода

from mayavi import mlab
import numpy
x, y = numpy.mgrid[-10:10:21*1j, -10:10:21*1j]
z = (-x + 5 * y + 11) / 2
zz = (-3 * x + 2 * y + 7) / 3
xx = numpy.linspace(-10, 10, 21)
yy = -3 / 11 * xx - 19 / 11
zzz = (-xx + 5 * yy + 11) / 2
mlab.surf(x, y, z)
mlab.surf(x, y, zz)
mlab.points3d(xx, yy, zzz)
mlab.show()

Эта цифра произведена

enter image description here

...