ZKX's LAB

opengl 光滑曲线差值 opengl中怎么实现颜色插值

2021-04-09知识6

谢邀,又到了我司TD大佬大显神通的时候了(多图预警)Blender 最大的优点是什么?Blender是一个开源的多…

如何用opengl划曲线 只能根据方程用点来表示,或者用直线来模拟,不能直接画曲线的。BEZIER和插值曲线有支持的函数,可以参观OPENGL编程宝典中有关的内容。

opengl中怎么实现颜色插值 这是一个静态插值算法的效果,图形学中插值算法应用十分广。如动画。photoshop,autocAD等软件画曲线,还有shader中的渐变上色也是一个硬件支持的插值算法。Interpolation是非常低层的算法,在图形学中能够说无处不在。本程序通过设置两个vector。然后就能够在这两个vector之间插入点,得到不同的效果如两个vector不同长度能够得到:假设长度同样。就能够得到一个扇形:所有自家定义的函数实现的,主要代码:一)计算两个向量的夹角。返回夹角大小:float calVecTheta(Vector2f vfir,Vector2f vsec){float r=sqrtf(vfir.x*vfir.x+vfir.y*vfir.y);Vector2f vfirNor;vfirNor.x=vfir.x/r;vfirNor.y=vfir.y/r;r=sqrtf(vsec.x*vsec.x+vsec.y*vsec.y);Vector2f vsecNor;vsecNor.x=vsec.x/r;vsecNor.y=vsec.y/r;float theta=acosf(vfirNor.x*vsecNor.x+vfirNor.y*vsecNor.y);return theta;}二)实现插值公式:void interpolateTwoVectors(Vector2f&vout,Vector2f&vfir,Vector2f&vsec,float theta,float t){float a=sinf((1.0f-t)*theta)/sinf(theta);float b=sinf(t*theta)/sinf(theta);vout.x=a*vfir.x+b*vsec.x;vout.y=a*vfir.y+b*vsec.y;}三)产生顶点缓冲。

#opengl 光滑曲线差值

随机阅读

qrcode
访问手机版