1 Attribute VB_Name = "Bezier"
\r
2 Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
\r
3 Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
\r
4 Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
\r
6 Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
\r
7 Public Const SRCCOPY = &HCC0020
\r
15 Global ft(30) As Single
\r
16 Global Pt(30) As pts
\r
17 Global MaxPt As Long
\r
19 Sub bezier_draw(nb As Long, OffX As Long, OffY As Long)
\r
20 Dim i As Long, pas As Single, t As Single, oldx As Single, oldy As Single, x As Single, y As Single
\r
23 Call ini_factorielles
\r
27 For t = pas To 1 Step pas
\r
30 ppal.Line (OffX + oldx, OffY + oldy)-(OffX + x, OffY + y), QBColor(ppal.Color.Value)
\r
35 ppal.PSet (OffX + Pt(i).x, OffY + Pt(i).y), QBColor(ppal.Color.Value)
\r
40 Function bezier_pty(t As Single) As Single
\r
41 Dim k As Long, i As Long
\r
44 bezier_pty = bezier_pty + Pt(i).y * melange(k, MaxPt, t)
\r
49 Function bezier_ptx(t As Single) As Single
\r
50 Dim k As Long, i As Long
\r
53 bezier_ptx = bezier_ptx + Pt(i).x * melange(k, MaxPt, t)
\r
59 Sub ini_factorielles()
\r
62 ft(i&) = ft(i& - 1) * i&
\r
67 Sub make_pt(i As Long, x As Long, y As Long)
\r
73 Function melange(i As Long, n As Long, t As Single) As Single
\r
74 melange = CSng(ft(n) / ft(i) / ft(n - i)) * t ^ i * (1 - t) ^ (n - i)
\r