之间绘制曲线基本上我希望在OpenGL绘制3点之间的曲线下面的图像指示。我找到了几段代码,这些代码对于使用4点绘制贝塞尔曲线很有用,但是对于我没有取得成功的3点来说很有用。的OpenGL:3分
1
A
回答
7
从您有以下公式贝塞尔曲线(每个X,Y分量)的定义:
x(t) = (1-t)^3*p1x + 3*t*(1-t)^2*c1x + 3*t^2*(1-t)*c3x + t^3*p3x
y(t) = (1-t)^3*p1y + 3*t*(1-t)^2*c1y + 3*t^2*(1-t)*c3y + t^3*p3y
在你的情况,你知道的中点(p2x,p2y)
。您还可以假设c1x
和c2x
具有相同的值;并且c1y
和c2y
也具有相同的值
因此,我们在t被求解c1x=c2x
和c1y=c2y
与
c1x = c2x = -(p1x-8*p2x+p3x)/6
c1y = c2y = -(p1y-8*p2y+p3y)/6
以下等式= 0.5
p2x = (3/4)*c1x+(p1x+p3x)/8
p2y = (3/4)*c1y+(p1y+p3y)/8
,得到最终
012:贝塞尔方程在点(p1x,p1y)
,
(p2x,p2y)
和
(p3x,p3y)
方面使用
x(t) = (1-t)^3 * [p1x]
+ 3*t*(1-t)^2 * [-(p1x-8*p2x+p3x)/6]
+ 3*t^2*(1-t) * [-(p1x-8*p2x+p3x)/6]
+ t^3 * [p3x]
y(t) = (1-t)^3 * [p1y]
+ 3*t*(1-t)^2 * [-(p1y-8*p2y+p3y)/6]
+ 3*t^2*(1-t) * [-(p1y-8*p2y+p3y)/6]
+ t^3 * [p3y]
摘要
尝试四个控制点
(p1x, p1y)
(-(p1x-8*p2x+p3x)/6, -(p1y-8*p2y+p3y)/6)
(-(p1x-8*p2x+p3x)/6, -(p1y-8*p2y+p3y)/6)
(p3x, p3y)
这里是我与p1=(0,0)
,p2=(2,2)
和p3=(4,-1)
制成的例子。余计算的以下控制点
(0, 0)
(2, 17/6)
(2, 17/6)
(4, -1)
的结果如下所示:
1
听起来像是你想有一个Hermite spline。
相关问题
- 1. 的OpenGL 3+ BlackScreen - C++
- 2. Cg和OpenGL 3
- 3. 在OpenGL 3+
- 4. OpenGL ES 2.0 vs OpenGL 3 - 异同点
- 5. OpenGL 3:glBindVertexArray无效GL_ELEMENT_ARRAY_BUFFER
- 6. 转换的OpenGL纹理1码的OpenGL 3
- 7. 的OpenGL 3和的Radeon HD 4850x2
- 8. Tegra 3设备上的OpenGL扩展
- 9. 在OpenGL 3.x的VBO索引
- 10. OpenGL 3中的所有glTexParameters在哪里?
- 11. LWJGL 3:OpenGL Quad中的随机(0,0)点
- 12. 没有的OpenGL在处理3
- 13. iOS上的OpenGL ES 2和3
- 14. D中的OpenGL 3/4支持
- 15. OpenGL的分离RGB通道
- 16. 我想通过OpenGL编程指南第7版学习OpenGL 3,但OpenGL 4.0与3.x有什么不同?
- 17. cocos2d-x 3.x openGL获取错误
- 18. 在opengl中旋转困难3
- 19. OpenGL 3程序空白屏幕
- 20. GL_TIME_ELAPSED等价于OpenGL ES(2或3)
- 21. 如果OpenGL 3+请求,glfw3不绘制?
- 22. CG Shader语义与OpenGL 3.x?
- 23. OpenGL 3.x Macbook Air 2012年中期
- 24. 共混3层在OpenGL与背景
- 25. 如何使用C学习OpenGL 3.x?
- 26. Boost.Python + OpenGL分段错误
- 27. OpenGL“分段错误”错误
- 28. 了解iPhone OpenGL分析
- 29. OpenGL隐藏世界的一部分
- 30. OpenGL着色器的性能分析
注:贝塞尔曲线不会去通过P2。 – Howard 2012-07-19 18:54:51
看http://asymptote.sourceforge.net/doc/Bezier-curves.html如何控制点和中点被用来构建一个贝塞尔曲线。在你的情况下,你知道终点和中点'm5' – ja72 2012-07-19 19:22:34