Math 论文M.Nie和#xDF的系数;一种用于硬件细分的高效背片剔除算法
本文提出了一种在剪辑空间中对bezier面片进行背面剔除的新方法。在第5节中,他们使用符号代数软件展开方程,发现矩阵T(u,v)的所有系数都是4的wigth和。他们生成了表格:Math 论文M.Nie和#xDF的系数;一种用于硬件细分的高效背片剔除算法,math,wolfram-mathematica,symbolic-math,computer-algebra-systems,Math,Wolfram Mathematica,Symbolic Math,Computer Algebra Systems,本文提出了一种在剪辑空间中对bezier面片进行背面剔除的新方法。在第5节中,他们使用符号代数软件展开方程,发现矩阵T(u,v)的所有系数都是4的wigth和。他们生成了表格: int idx[4][] = {{i1, j1, k1, l1}, ... {im, jm, km, lm}}; float wgt[] = {w1, ..., wm}; 所以我试着做同样的事情,但我从未使用过符号代数软件。4小时后我所做的一切就是这样(Wolfram Mathematica): 有人精通符号代数,能帮
int idx[4][] = {{i1, j1, k1, l1},
...
{im, jm, km, lm}};
float wgt[] = {w1, ..., wm};
所以我试着做同样的事情,但我从未使用过符号代数软件。4小时后我所做的一切就是这样(Wolfram Mathematica):
有人精通符号代数,能帮我生成这张表吗?这张表做得很好,但完全令人费解,真是太好了title@ethrbunny,对标题有什么建议吗?一点也没有!我相信这对聪明人来说是非常有意义的。我只是浏览了一下这篇文章,但他们说“所有双三次Bézier补丁的[权重]值都是相同的,我们将它们放在一个头文件中,格式由您想要生成的表给出”。所以你可能需要手动创建那个表。@Teepeemm,我知道。我试图做和他们一样的事情,但失败了。我不知道,当t_I=…+时,如何得到这个表单wgt*cross4(b_j,b_k,b_l)+。我需要有人,谁可以帮助我,并显示,我可以得到它。
B[u_, v_] := Transpose[({
{BernsteinBasis[3, 0, u]},
{BernsteinBasis[3, 1, u]},
{BernsteinBasis[3, 2, u]},
{BernsteinBasis[3, 3, u]}
})].({
{b0, b1, b2, b3},
{b4, b5, b6, b7},
{b8, b9, b10, b11},
{b12, b13, b14, b15}
}).({
{BernsteinBasis[3, 0, v]},
{BernsteinBasis[3, 1, v]},
{BernsteinBasis[3, 2, v]},
{BernsteinBasis[3, 3, v]}
})
fx[a_, b_, c_] := Det[({
{a.y, b.y, c.y},
{a.z, b.z, c.z},
{a.w, b.w, c.w}
})]
fy[a_, b_, c_] := -Det[({
{a.x, b.x, c.x},
{a.z, b.z, c.z},
{a.w, b.w, c.w}
})]
fz[a_, b_, c_] := Det[({
{a.x, b.x, c.x},
{a.y, b.y, c.y},
{a.w, b.w, c.w}
})]
fw[a_, b_, c_] := -Det[({
{a.x, b.x, c.x},
{a.y, b.y, c.y},
{a.x, b.z, c.z}
})]
cross4[a_, b_, c_] := Transpose[({
{fx[a, b, c], fy[a, b, c], fz[a, b, c], fw[a, b, c]}
})]
T[a_, b_] :=
cross4[B[a, b], D[B[u, v], u] /. u -> a /. v -> b,
D[B[u, v], v] /. u -> a /. v -> b]