Как построить несколько 3d линий с угловым смещением от исходной линии? - PullRequest
0 голосов
/ 14 мая 2019

Я нарисовал линию, скажем x/a + y/b + z/c = 0, и хочу построить набор 3d линий с угловым смещением, скажем, 5 deg, т.е. я хочу построить много линий, которые составляют angle <= 5 deg с исходной линией.

# my plot function with takes t = [a;b;c] as argument

def plot(t):
    z = np.linspace(-2, 2, 100)
    x = z*t[0]/t[2]
    y = z*t[1]/t[2]

    ax.plot(x, y, z, label=t)
    ax.legend()
    plt.show()

1 Ответ

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

Проверьте 3d разделы этой ссылки:

https://en.wikipedia.org/wiki/Line_(geometry)

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

x = x0 + a * t
y = y0 + b * t
z = z0 + c * t

где:

x, y и z - все функции независимой переменной t, которая находится в пределах действительных чисел. (x0, y0, z0) - любая точка на линии.

a, b и c относятся к наклону линии, так что вектор v = (a, b, c) параллелен линии.

Таким образом, чтобы решить вашу проблему, вы должны найти a1, b1, c1 так, чтобы векторы (a, b, c) и (a1, b1, c1) имели желаемое смещение угла. Затем вы рисуете линию.

Чтобы найти v1 = (a1, b1, c1), вы можете использовать свойство скалярного произведения:

v1.v = a.a1 + b.b1 + c.c1 and v1.v = |v1|.|v|.cos(angle)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...