2016-01-07 3 views
0

я получил бикубическое Безье патча хранится в виде 16 float3 точекбикубического Безья патча - проблемы с пониманием

float3 bezier[16]; 

тех 4 комплекта из 4 точек

{A4 B4 C4 D4} // 4th curve 
{A3 B3 C3 D3} //3rd curve 
{A2 B2 C2 D2} //2nd curve 
{A1 B1 C1 D1} //1st curve 

хорошо, я оценить баллы за данный t, p(t), где t от 0.0 до 1.0. Это легко. Я использую следующие пункты:

{1st curve point p0(t=0 ) , 2nd curve point p1(t=0 ), 3rd p2(t=0 ), 4th p3(t=0 ) } 
{1st curve p0(t=0.1) , 2nd p1(t=0.1), 3rd p2(t=0.1), 4th p3(t=0.1) } 

оценить и нарисовать «ортогональные» (поперечные) кривые.

Я не могу понять одну вещь, те контрольные точки B, C для первых базовых кривых - это контрольные точки, и насколько я понял, они не лежат на поверхности. Те все оцениваемые p(t) на четыре базовых кривых лежит на поверхности *, я использую их, то для оценки ортогональных кривых (Сорта, как ортогональной A' B' C' D'), а затем оценивали q(t) значения я использую, чтобы сделать путь

Еще короче, чтобы быть для уверен, что понял:

Я использую четыре {A, B, C, D} наборы, чтобы оценить четыре p(t) кривые t берется с шагом, как 1/30, тридцать шагов; Затем я беру эти p(t) очки как {A' B' C' D'} оценить q(t) ортогональные/поперечные кривые

Thing Я не в состоянии понял это:

если B,C в базе кривых не лежат на поверхности, поэтому во втором шаг я принимаю p2(t), p3(t) баллов. Если они лежат на поверхности как контрольные точки B' C'?

Разве это не противоречит?

Или, может быть, оценивали p[1,2](t) не лежат на поверхности либо - но если это так, почему все поперечные оценивали q(t) закладывают на поверхности, где оценивается p(t) не кладя? Разве это не противоречит? если я оцениваю в p -направление, я получил виртуальные точки, и если я оцениваю в q направлении, то получил реальные очки?

Может кто-нибудь объяснить это?

+0

который второй шаг? –

+0

Как вы оцениваете 30 пунктов на шаге 1, но используете только 4 на шаге 2? Во всяком случае, вы не можете использовать точки на шаге 1 в качестве контрольных точек на шаге 2, если используете кривые Безье. –

+0

На первом этапе я оцениваю четыре кривые (например, 30 баллов, оцененных на каждом), назовите их p0 (t), p1 (t), p2 (t), p3 (t) - они оцениваются на базовых четырех наборах контрольные точки ... На втором этапе я беру эти 30 * 4 точки, чтобы оценить кривые 30 q (t) (которые я также оцениваю с помощью 30 шагов, например, я получил тогда окончательные 900 квадрациклов) – user2214913

ответ

4

Я не понимаю, где вы застряли, но контрольные точки поверхности Безье не лежат на самой поверхности (ну, не все из них, 4 угла).

enter image description here

Чтобы оценить точку на поверхности Безье вам нужны эти контрольные точки, но вам нужно, чтобы подключить их к поверхности уравнения Безье. Существует два основных способа описания уравнения: аналитическая форма и матричная форма.


Analitic форма

тот, который показывает википедии:

enter image description here

enter image description here

где K ваши контрольные точки, и и, v перейти от 0 до 1.


форма Матрица

enter image description here

где матрицы являются:

enter image description here

enter image description here

enter image description here

В этом случае Р являются контрольными точками, но и, v также от 0 до 1.


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

http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/AV0405/DONAVANIK/bezier.html

+1

Хе-хе вы меня избили, когда я редактировал вопрос :) (+1) приятное изображение для этого – Spektre

+0

@Spektre hey ваши ответы в целом неплохие, вы можете отправить его в любом случае! –

+0

Я использую другой метод, см. Комментарий ниже вопроса - может repaste »На первом шаге я оцениваю четыре кривые (например, 30 баллов, оцененных на каждом), назовите их p0 (t), p1 (t), p2 (t), p3 (t) - они оцениваются на базе четырех наборов контрольных точек ... На втором этапе я беру эти 30 * 4 точки для оценки кривых 30 q (t) (которые я также оцениваю с помощью 30 шагов, например, я получил окончательный 900 квадрациклов для рисования) »- этот код неправильный? Мне кажется, что я немного логически несогласован, но я не уверен – user2214913