Генерировать траекторию вдоль поверхности сферы со скоростьюPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Генерировать траекторию вдоль поверхности сферы со скоростью

Сообщение Anonymous »

Я пытаюсь генерировать траекторию между 2 точками a и b вдоль поверхности полушария .
ограничения:
< ul>
Конечная точка траектории (точка B) должна иметь скорость в определенном направлении < /strong>, заданная (VX, VY, VZ). < /li>

Я реализовал простой SLERP (сферическая линейная интерполяция) для этого, но как мне дать скорость в точке B?
Текущий код:

Код: Выделить всё

# Simple SLERP

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

def slerp(A, B, t):
# Interpolates between points A and B on a sphere using Slerp.
A = A / np.linalg.norm(A)
B = B / np.linalg.norm(B)

dot_product = np.clip(np.dot(A, B), -1.0, 1.0)  # Clamped to avoid precision errors
omega = np.arccos(dot_product)  # Angular distance

if np.isclose(omega, 0):
return A

return (np.sin((1 - t) * omega) * A + np.sin(t * omega) * B) / np.sin(omega)

A_cartesian = np.array([1, 0, 0])  # Point A on unit sphere
B_cartesian = np.array([0, 1, 0])  # Point B on unit sphere

num_points = 10  # Number of trajectory points
trajectory = np.array([slerp(A_cartesian, B_cartesian, t) for t in np.linspace(0, 1, num_points)])

# Visualization
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(trajectory[:, 0], trajectory[:, 1], trajectory[:, 2], 'bo-', label="Trajectory")
ax.scatter(*A_cartesian, color='red', label='Start (A)')
ax.scatter(*B_cartesian, color='green', label='End (B)')

# Sphere surface
u, v = np.mgrid[0:2 * np.pi:20j, 0:np.pi:10j]
x = np.cos(u) * np.sin(v)
y = np.sin(u) * np.sin(v)
z = np.cos(v)
ax.plot_wireframe(x, y, z, color='gray', alpha=0.3)

ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.set_zlabel("Z")
ax.legend()
plt.show()

Дайте мне знать, если есть какая -то путаница в отношении «Что означает скорость в точке».

Подробнее здесь: https://stackoverflow.com/questions/794 ... h-velocity
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»