2013-09-11 4 views
0

Как изменить форму формы, растягивая ее в разные стороны, без изменения периметра? возьмите кусочек струны с обоими концами, соединенными в качестве примера, он сформирует форму, напоминающую круг, если одна сторона будет нажата или выведена, изменится только форма, но периметр и область останутся неизменными. Я пытаюсь добиться чего-то почти, если не идентичного этому.Измените форму формы

Я не уверен, что я очень четко проясняю свой вопрос, пожалуйста, дайте мне знать, если вам нужно дать более подробную информацию. Любая помощь будет оценена по достоинству.

Несмотря на то, что это необходимо для приложения, написанного на объекте-c, также может помочь код на C, C++ или C#.

+0

Это больше похоже на проблему математики/геометрии, поэтому вам лучше спросить на http://math.stackexchange.com. - Сохранение как периметра, так и площади может быть трудным или невозможным. –

+0

Да, я думаю, вы правы. сохранение области/периметра не должно быть требованием. Спасибо за ваш комментарий – jalc

ответ

0

Допустим, у вас есть набор точек p, которые представляют собой выпуклую оболочку вашего объекта, то, что ваша нить будет опираться. Вы предоставили ограничение таким образом, чтобы общий периметр был постоянным, но без предоставления дополнительной информации существует множество способов, которыми эти точки могут быть перегруппированы с учетом вашего единственного ограничения.

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

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

+0

Ну, допустим, у меня есть набор точек, которые создают границу нерегулярного изображения. Я хочу изменить размер границы (пальцем на iPad). Это тот же эффект, что и при круглой строке на столе, и пальцем меняю форму. Я уже реализовал алгоритм обнаружения, когда палец касается границы Теперь мне нужен алгоритм, чтобы перетащить касающуюся точку на границе изменить форму границы – jalc

+0

Я понимаю ваш вопрос, но я не думаю, что вы поняли мой ответ. В вашей проблеме есть несколько решений. Если вы собрали точки, определите равносторонний треугольник с периметром 3, и вы нажмете 1 пункт от центра. Одним из решений является ограничение расстояний между этой вершиной и другой 2, а также угол, создаваемый этими ребрами. Это просто перетащит эти 2 точки вместе с первым. это не то, что вы хотите. – user2761771

+0

Другим решением было бы ограничить расстояния, но не углы. Когда вы вытащите точку, остальные две вершины будут двигаться ближе друг к другу (край между ними будет уменьшаться), чтобы учесть увеличенную длину остальных двух ребер. – user2761771

Смежные вопросы