之間繪製曲線基本上我希望在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. 在OpenGL 3+
- 3. Cg和OpenGL 3
- 4. OpenGL ES 2.0 vs OpenGL 3 - 異同點
- 5. OpenGL 3:glBindVertexArray無效GL_ELEMENT_ARRAY_BUFFER
- 6. OpenGL中對利用3幀
- 7. 轉換的OpenGL紋理1碼的OpenGL 3
- 8. 的OpenGL 3和的Radeon HD 4850x2
- 9. D中的OpenGL 3/4支持
- 10. iOS上的OpenGL ES 2和3
- 11. OpenGL 3中的所有glTexParameters在哪裏?
- 12. OpenGL的3純文本手冊頁
- 13. Tegra 3設備上的OpenGL擴展
- 14. 在OpenGL 3.x的VBO索引
- 15. 沒有的OpenGL在處理3
- 16. 的OpenGL 3.X - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER)和VAOs
- 17. Galaxy S4上的OpenGL 3 Android 4.4.2
- 18. LWJGL 3:OpenGL Quad中的隨機(0,0)點
- 19. SDL,OpenGL的:分割故障
- 20. OpenGL中的內存分配
- 21. OpenGL的分離RGB通道
- 22. SDL2跨平臺OpenGL 3+和OpenGL ES 2.0或3.0
- 23. 共混3層在OpenGL與背景
- 24. 如果OpenGL 3+請求,glfw3不繪製?
- 25. GL_TIME_ELAPSED等價於OpenGL ES(2或3)
- 26. 如何使用C學習OpenGL 3.x?
- 27. 渲染點(粒子)與OpenGL 3+
- 28. 在opengl中旋轉困難3
- 29. OpenGL 3.x Macbook Air 2012年中期
- 30. Arch Linux中沒有OpenGL 3頭文件
注:貝塞爾曲線不會去通過P2。 – Howard 2012-07-19 18:54:51
看http://asymptote.sourceforge.net/doc/Bezier-curves.html如何控制點和中點被用來構建一個貝塞爾曲線。在你的情況下,你知道終點和中點'm5' – ja72 2012-07-19 19:22:34