Как мне соединить кривую фиксированной длины между двумя точками в пространстве, используя Matlab? - PullRequest
0 голосов
/ 16 февраля 2009

У нас есть две точки (x1, y1, z1) и (x2, y2, z2) в трехмерном пространстве. У нас есть кривая фиксированной длины , которая должна быть соединена (не с прямой линией) между этими точками. Как поступить с кодом в Matlab?

Ответы [ 2 ]

1 голос
/ 17 февраля 2009

Если вы пытаетесь свести к минимуму углы изгиба в суставах вашего робота, то наилучшей кривой будет дуга окружности.

Пусть L - длина дуги, d - расстояние между конечными точками, тета - половина угла дуги, а r - радиус дуги. Тогда:

d / L = sin (theta) / theta ==> решить это численно для theta, используя один из решателей Matlab

Как только у вас есть тета, радиус дуги будет: r = L / (2 * тета)

Есть еще бесконечное количество дуг между двумя конечными точками с этими r и theta. Вам нужно будет использовать некоторые другие критерии, чтобы выбрать угол поворота точек, которые нужно использовать.

1 голос
/ 16 февраля 2009

Не зная, как далеко вы пытаетесь использовать змей (то есть активные контуры), лучшее, что я могу сделать, это предложить следующие ссылки:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...