Render.ru

точно расположить точки на кривой

puffy:-)gizmo

Активный участник
Рейтинг
17
#1
а можно-ли к готовой кривой из двух точек добавить точки так, чтобы они были ровно расположены, по центру - потом по краям от центра, но по центру от центральной точки и конечной... понятно? ситуация такая: две точки мне известны, но они черти как расположены в пр-ве и расчитать положение центральной не так-то просто.. можно, конечно, с листочком бумаги и ручкой, но хотелось бы попроще... чертова аналитическая геометрия..
 

Vytali

Активный участник
Рейтинг
17
#2
Ты не мудри! Ты на пальцах покажи!

...Есть такая штука, rebuild curve называется...
 
#3
ну так чем тебе инсерт кнот с галкой битвин селекшен не нравится?
только ты уточнил бы, какие точки ты имеешь ввиду, св или еп?
 

Vytali

Активный участник
Рейтинг
17
#4
>надо однако понимать, что речь идет не о цв

разумеется не о цв
 
#8
Только это "halfway" имеет отношение к параметризации, а не к длине кривой...
 
#10
у человека кривая из двух точек. естественно 1-degree
какая бы там не была параметризация, это "halfway" будет как раз посередине спана.
чего не так?
 
#11
ну а если кривая все-так 3-degree ))
и параметризация на этом спане неоднородная.. то инсерт кнот явно отдыхает, пока этой курве не сделать юниформ ребайлд, который естественно подвинет цв и изменит форму..
так что вот виталик, в этом случае ребайлд тоже особо не поможет.
тут непонятно, про что собственно был вопрос, и какая у человека было курва..
все таки мне кажется имелась ввиду 1-degree curve
ну да ладно )
 

puffy:-)gizmo

Активный участник
Рейтинг
17
#12
нет, curve - не 1 degree - ситуация такая: есть первые две точки кривой положение которых я изменить не могу, после них аривая продолжается и следует еще несколько точек... мне нужно добавить еще одну точку точно посередине - между первой и второй (чтобы положение первой и второй не изменилось). положение остальны, в принципе, свободное - я могк их двигать как хочу..
 
#13
объясни, посередине - это таким образом, чтобы длины полученных после инсерта точки спанов были одинаковы?
и насколько точно тебе это нужно? просто если у тебя на первом спане параметризация однородная, то инсерт кнот с педалькой битвин вставит тебе еп как раз как ты хочешь.
чем менее однородна параметризация тем больше будет погрешность..
 

puffy:-)gizmo

Активный участник
Рейтинг
17
#14
да, чтобы длины полученных после инсерта точки спанов были одинаковы.да, и еще такой момент - вторая точка - она на самом деле не одна, а три точки с одикаковыми координатами..
так,что сейчас идет сначала одна точка, потом та, которую мне нужно вставить, потом три с одикаковыми координатыми..
а вообще, может я ссылкуна скрин прислать смогу - чтобы нагляднее было.
 
#15
Hедавно спpашивала - что значит фpаза "I don"t know" - и никто не знает!

Пришлось самой копать

string $curve = "curve1"; //curve1- название твоей курвы
string $arcLD = `arcLengthDimension ( $curve + ".u[1]" )`;
float $arcLength = `getAttr ( $arcLD + ".arcLength" )`;
float $arcLengthH = $arcLength/2; //половина длины спана

Вот. Теперь бы по длине узнать u-координату точки на кривой, и вставить бы туда knot. Что-то меня постоянно пpеследyют yмные мысли - но я всегда быстpее.

insertKnotCurve -ch on -p ... $curve ;

Еще немного и я умру :о(
 

puffy:-)gizmo

Активный участник
Рейтинг
17
#17
спасибо, Kivius, за скрипт. думаю, он многим прогодится.. только, насколько я понял, этот скрипт рассчитан на нахождение центральной точки всей кривой, а не между двумя, отдельно взятыми точками.. и еще один момент: чтобы знать u точно - нужна cv с весом, больше 1 (как сказали выше), или три cv с одинаковыми координатами, ну или degree 1. в этом случае лучше правда использовать insert knot и between selections..
в своем случае я сделал так: первая точка, следуящая и т.д несколько раз. положение первых двух двух я менять не могу. далее, в районе второй точки я добавил еще две по бокам, потом задал им одну координату. потом между самой первой точкой и трех с одной координатой - insert knot и between selections.
 
#18
Никому он не пригодится, потому что не дописан. К сожалению, возможности медицины безграничны - ограничены лишь возможности пациентов... :о)))

Нет, этот скрипт расчитан на конкретную задачу найти половину длины кривой от первой до второй EP, причем кривая должна быть uniform.

Чтобы добавить дополнительные точки конкретно в место, где уже есть EP, можно, например, написать команду, чтобы не париться:

insertKnotCurve -add off -p 1 -nk 3 curve1;

где
curve1 - название кривой
-p 1 - твоя 2-ая EP (опять же при однородной параметризации, )
-add off nk 3 - добавляет в существующем месте knots, чтобы всего их было 3.

Единственная проблема, я не понимаю, почему создается новая кривая, называемая curve1insertedKnotCurve1.
Впрочем, эту проблему тоже можно решить, написав
delete curve1;
rename curve1insertedKnotCurve1 curve1;
:о)))
Кивиус добрался до Мела, теперь глупости на форуме будет во много раз больше. Прости, ЭфОдин, несёт... :о(
 
#19
"Несет" это не страшно, гораздо менее приятная история, когда "проносит"... Утверждается, что в API есть функция, возращающая параметр по длине... Ну а нам по старинке, придется воспользоваться методом бескончного спуска или любого другого (секущих, Ньютона) для нахождения корня нелинейного уравнения, а именно таковой является задача нахождения значения параметра по длине дуги кривой...в полевых условиях...
 
#20
Я подумаю над этим, но не знаю, как долго это будет продолжаться и чем все это закончится. :о)))
 
Сверху