You are not logged in or registered. Please login or register to use the full functionality of this board...
SIGN IN Join Our Community For FREE


FbCadCam
09-10-2017, 02:05 AM
Post: #11
 (Print Post)
RE: FbCadCam
chain moves as sprockets rotate
[Image: draw-entities-data-move-rotate-chain-sprockets.png]
draw-entities-data-move-rotate-chain-sprockets.bas
Code Snippet: [Select]
'chain and sprockets
'the initial drawing for the sprockets and chain links
'were drawn using fbcadcam.
'owen reese, fbcadcam.com opreese@gmail.com

'up and down arrow keys speed up and slow down
'mouse wheel zoom in and out
'press esc to end.

Declare Function mymod(n As Double,m As Integer) As Double
Declare Sub show_entities()
Declare Sub move_entities(move_x As Double, move_y As Double, Ls As Integer,Le As Integer, Cs As Integer, Ce As Integer)
Declare Sub move_circle_entities(move_x As Double, move_y As Double, Cs As Integer, Ce As Integer)
Declare Sub move_line_entities(move_x As Double, move_y As Double, Ls As Integer,Le As Integer)
Declare Sub rotate_entities(pivot_pt_x As Double, pivot_pt_y As Double, rotation_angle As Double, Ls As Integer,Le As Integer, Cs As Integer, Ce As Integer)
Declare Sub rotate_circle_entities(pivot_pt_x As Double, pivot_pt_y As Double, rotation_angle As Double, Cs As Integer, Ce As Integer)
Declare Sub rotate_line_entities(pivot_pt_x As Double, pivot_pt_y As Double, rotation_angle As Double, Ls As Integer,Le As Integer)
Declare Sub plotellipse(ex1 As Double,ey1 As Double,er1 As Double,estart As Double,eend As Double,er2 As Double,eangle As Double)
Declare Sub read_entity_data()
Declare Sub zoomoutpan()
Declare Sub zoominpan()

Const pi As double = 4 * Atn(1)

Dim Shared As Integer linesc,circlesc
Dim Shared As Double lines()
Dim Shared As Double circles()
Dim Shared As Double chain_init()
Dim As Integer i,j,k,m,n,c,cc,speed

Dim Shared As Integer sprocket_1_linesc_start,sprocket_1_linesc_end,sprocket_1_circlesc_start,sprocket_1_circlesc_end
Dim Shared As Integer sprocket_2_linesc_start,sprocket_2_linesc_end,sprocket_2_circlesc_start,sprocket_2_circlesc_end
Dim As Double sprocket1x,sprocket1y,sprocket1r,sprocket2x,sprocket2y,sprocket2r

Dim Shared As Integer chain_link_piece_1_circlesc_start,chain_link_piece_1_circlesc_end
Dim Shared As Integer chain_link_piece_2_circlesc_start,chain_link_piece_2_circlesc_end
Dim As Integer chain_link_piece_3_circlesc_start,chain_link_piece_3_circlesc_end
Dim As Double clpx,clpy,clpx1,clpy1,clpx2,clpy2
Dim As Integer clpi,linksc,clp_total_entity_count,clp1cs,clp1ce,clp2cs,clp2ce,clp3cs,clp3ce

Dim As Double ac,angle,a1x,a1y,a2x,a2y

Dim As Double cpath(1079,2)

Dim Shared As Integer wx1,wy1,wx2,wy2,wzoom,wzoomt,maxzoomin,maxzoomout
Dim Shared As Integer mousex,mousey,mousew,mousewp,mouse_in_window

wzoom=20
wzoomt=20
maxzoomin=100
maxzoomout=10000


wx1=0
wy1=0
wx2=600
wy2=600

ScreenRes 600,600
window (wx1,wy1)-(wx2,wy2)
linesc=0
circlesc=0

sprocket_1_linesc_start=linesc+1
sprocket_1_circlesc_start=circlesc+1
read_entity_data
sprocket_1_linesc_end=linesc
sprocket_1_circlesc_end=circlesc

sprocket_2_linesc_start=linesc+1
sprocket_2_circlesc_start=circlesc+1
read_entity_data
sprocket_2_linesc_end=linesc
sprocket_2_circlesc_end=circlesc

sprocket1x=170
sprocket1y=300
sprocket1r=95.88679832249493
sprocket2x=467.592372833434
sprocket2y=300
sprocket2r=57.9555495773441



chain_link_piece_1_circlesc_start=circlesc+1
read_entity_data
chain_link_piece_1_circlesc_end=circlesc

chain_link_piece_2_circlesc_start=circlesc+1
read_entity_data
chain_link_piece_2_circlesc_end=circlesc

chain_link_piece_3_circlesc_start=circlesc+1
read_entity_data
chain_link_piece_3_circlesc_end=circlesc

clp_total_entity_count=chain_link_piece_3_circlesc_end-chain_link_piece_1_circlesc_start+1
linksc=17
ReDim Preserve circles(circlesc+clp_total_entity_count*linksc,7)
'make 17 more coppies of each link piece for a total of 18 links
For i = 1 To linksc
    For j=chain_link_piece_1_circlesc_start To chain_link_piece_3_circlesc_end
        circlesc+=1
        For k=0 To 7
            circles(circlesc,k)=circles(j,k)
        Next
    Next
Next

ReDim chain_init(clp_total_entity_count*(linksc+1),7)
c=0
For i = 0 To linksc
    For j=chain_link_piece_1_circlesc_start To chain_link_piece_3_circlesc_end
        c+=1
        For k=0 To 7
            chain_init(c,k)=circles(j,k)
        Next
    Next
Next

move_entities(170,300,sprocket_1_linesc_start,sprocket_1_linesc_end,sprocket_1_circlesc_start,sprocket_1_circlesc_end)
move_entities(467.4,300,sprocket_2_linesc_start,sprocket_2_linesc_end,sprocket_2_circlesc_start,sprocket_2_circlesc_end)


'build a path for the chain to follow
a1x=sprocket1x+Cos(90*pi/180)*sprocket1r
a1y=sprocket1y+Sin(90*pi/180)*sprocket1r
a2x=sprocket2x+cos(90*pi/180)*sprocket2r
a2y=sprocket2y+Sin(90*pi/180)*sprocket2r
angle=atan2(a2y-a1y,a2x-a1x)/pi*180
'from top left to top right
c=-1
For i = 1 To 300
    c+=1
    cpath(c,1)=a1x+cos(angle*pi/180)*(i-1)
    cpath(c,2)=a1y+Sin(angle*pi/180)*(i-1)
Next
'around small sprocket
For i = 1 To 180
    c+=1
    cpath(c,1)=sprocket2x+Cos((90-i+1)*pi/180)*sprocket2r
    cpath(c,2)=sprocket2y+Sin((90-i+1)*pi/180)*sprocket2r
Next
'from bottom right to bottom left
a1x=sprocket2x+Cos(270*pi/180)*sprocket2r
a1y=sprocket2y+Sin(270*pi/180)*sprocket2r
a2x=sprocket1x+cos(270*pi/180)*sprocket1r
a2y=sprocket1y+Sin(270*pi/180)*sprocket1r
angle=atan2(a2y-a1y,a2x-a1x)/pi*180
For i = 1 To 300
    c+=1
    cpath(c,1)=a1x+cos(angle*pi/180)*(i-1)
    cpath(c,2)=a1y+Sin(angle*pi/180)*(i-1)
Next
'around the big sprockte
For i = 1 To 300
    c+=1
    cpath(c,1)=sprocket1x+Cos((270-(i-1)*.6)*pi/180)*sprocket1r
    cpath(c,2)=sprocket1y+Sin((270-(i-1)*.6)*pi/180)*sprocket1r
Next

For i=0 To linksc
    clp1cs=chain_link_piece_1_circlesc_start+clp_total_entity_count*i
    clp1ce=chain_link_piece_1_circlesc_end+clp_total_entity_count*i
    clp2cs=chain_link_piece_2_circlesc_start+clp_total_entity_count*i
    clp2ce=chain_link_piece_2_circlesc_end+clp_total_entity_count*i
    clp3cs=chain_link_piece_3_circlesc_start+clp_total_entity_count*i
    clp3ce=chain_link_piece_3_circlesc_end+clp_total_entity_count*i
    
    a1x=cpath(i*60,1)
    a1y=cpath(i*60,2)
    a2x=cpath(i*60+30,1)
    a2y=cpath(i*60+30,2)
    angle=atan2(a2y-a1y,a2x-a1x)/pi*180
    clpx=a1x
    clpy=a1y
    move_circle_entities(clpx,clpy,clp1cs,clp1ce)
    move_circle_entities(clpx,clpy,clp3cs,clp3ce)
    rotate_circle_entities(clpx,clpy,angle,clp1cs,clp1ce)
    rotate_circle_entities(clpx,clpy,angle,clp3cs,clp3ce)

    Select Case i
        Case 0 To 16
            a1x=cpath(i*60+30,1)
            a1y=cpath(i*60+30,2)
            a2x=cpath(i*60+60,1)
            a2y=cpath(i*60+60,2)
            angle=atan2(a2y-a1y,a2x-a1x)/pi*180
            clpx=a1x
            clpy=a1y
            move_circle_entities(clpx,clpy,clp2cs,clp2ce)
            rotate_circle_entities(clpx,clpy,angle,clp2cs,clp2ce)
        Case 17
            a1x=cpath(i*60+30,1)
            a1y=cpath(i*60+30,2)
            a2x=cpath(0,1)
            a2y=cpath(0,2)
            angle=atan2(a2y-a1y,a2x-a1x)/pi*180
            clpx=a1x
            clpy=a1y
            move_circle_entities(clpx,clpy,clp2cs,clp2ce)
            rotate_circle_entities(clpx,clpy,angle,clp2cs,clp2ce)
    End Select
Next

show_entities
Sleep 1000

speed=1
Do
    c=0
    For j=1 To 360 Step speed
        Select Case InKey
            Case Chr(27),Chr(255)+"k"
                End
            Case Chr(255)+"H"
                If speed<10 Then
                    rotate_entities(sprocket1x,sprocket1y,-.6*(361-j),sprocket_1_linesc_start,sprocket_1_linesc_end,sprocket_1_circlesc_start,sprocket_1_circlesc_end)
                    rotate_entities(sprocket2x,sprocket2y,-1*(361-j),sprocket_2_linesc_start,sprocket_2_linesc_end,sprocket_2_circlesc_start,sprocket_2_circlesc_end)
                    speed+=1
                    Exit For
                EndIf
            Case Chr(255)+"P"
                If speed>1 Then
                    rotate_entities(sprocket1x,sprocket1y,-.6*(361-j),sprocket_1_linesc_start,sprocket_1_linesc_end,sprocket_1_circlesc_start,sprocket_1_circlesc_end)
                    rotate_entities(sprocket2x,sprocket2y,-1*(361-j),sprocket_2_linesc_start,sprocket_2_linesc_end,sprocket_2_circlesc_start,sprocket_2_circlesc_end)
                    speed-=1
                    Exit For
                EndIf
        End Select
        mouse_in_window=GetMouse(mousex,mousey,mousew)
        If mouse_in_window=0 Then
            mousey=600-mousey
            mousex=wx1+(wx2-wx1)*(mousex/600)
            mousey=wy1+(wy2-wy1)*(mousey/600)
            If mousew<>mousewp Then
                If mousew>mousewp Then
                    zoominpan
                Else
                    zoomoutpan
                EndIf
                mousewp=mousew
                ScreenLock
                window (wx1,wy1)-(wx2,wy2)
                ScreenUnLock
            EndIf
        EndIf
        
        'rotate the sprockets
        rotate_entities(sprocket1x,sprocket1y,-.6*speed,sprocket_1_linesc_start,sprocket_1_linesc_end,sprocket_1_circlesc_start,sprocket_1_circlesc_end)
        rotate_entities(sprocket2x,sprocket2y,-1*speed,sprocket_2_linesc_start,sprocket_2_linesc_end,sprocket_2_circlesc_start,sprocket_2_circlesc_end)
        'put them back to zero
        cc=0
        For i = 0 To linksc
            For m=chain_link_piece_1_circlesc_start To chain_link_piece_3_circlesc_end
                cc+=1
                For n=0 To 7
                    circles(chain_link_piece_1_circlesc_start+cc-1,n)=chain_init(cc,n)
                Next
            Next
        Next
        
        c+=speed
        
        'If c>=31 Then c=speed
        'move them up on the sprockets
        For i=0 To linksc
            clp1cs=chain_link_piece_1_circlesc_start+clp_total_entity_count*i
            clp1ce=chain_link_piece_1_circlesc_end+clp_total_entity_count*i
            clp2cs=chain_link_piece_2_circlesc_start+clp_total_entity_count*i
            clp2ce=chain_link_piece_2_circlesc_end+clp_total_entity_count*i
            clp3cs=chain_link_piece_3_circlesc_start+clp_total_entity_count*i
            clp3ce=chain_link_piece_3_circlesc_end+clp_total_entity_count*i
            Select Case i
                Case 0 To 16
                    a1x=cpath((i*60+c) Mod 1080,1)
                    a1y=cpath((i*60+c) Mod 1080,2)
                    a2x=cpath((i*60+30+c) Mod 1080,1)
                    a2y=cpath((i*60+30+c) Mod 1080,2)
                    angle=atan2(a2y-a1y,a2x-a1x)/pi*180
                    clpx=a1x
                    clpy=a1y
                    move_circle_entities(clpx,clpy,clp1cs,clp1ce)
                    move_circle_entities(clpx,clpy,clp3cs,clp3ce)
                    rotate_circle_entities(clpx,clpy,angle,clp1cs,clp1ce)
                    rotate_circle_entities(clpx,clpy,angle,clp3cs,clp3ce)
                    
                    a1x=cpath((i*60+30+c) Mod 1080 ,1)
                    a1y=cpath((i*60+30+c) Mod 1080 ,2)
                    a2x=cpath((i*60+60+c) Mod 1080 ,1)
                    a2y=cpath((i*60+60+c) Mod 1080 ,2)
                    angle=atan2(a2y-a1y,a2x-a1x)/pi*180
                    clpx=a1x
                    clpy=a1y
                    move_circle_entities(clpx,clpy,clp2cs,clp2ce)
                    rotate_circle_entities(clpx,clpy,angle,clp2cs,clp2ce)
                Case 17
                    a1x=cpath((i*60+c) Mod 1080 ,1)
                    a1y=cpath((i*60+c) Mod 1080 ,2)
                    a2x=cpath((i*60+30+c) Mod 1080,1)
                    a2y=cpath((i*60+30+c) Mod 1080,2)
                    angle=atan2(a2y-a1y,a2x-a1x)/pi*180
                    clpx=a1x
                    clpy=a1y
                    move_circle_entities(clpx,clpy,clp1cs,clp1ce)
                    move_circle_entities(clpx,clpy,clp3cs,clp3ce)
                    rotate_circle_entities(clpx,clpy,angle,clp1cs,clp1ce)
                    rotate_circle_entities(clpx,clpy,angle,clp3cs,clp3ce)
                    
                    a1x=cpath((i*60+30+c) Mod 1080,1)
                    a1y=cpath((i*60+30+c) Mod 1080,2)
                    a2x=cpath((i*60+60+c) Mod 1080,1)
                    a2y=cpath((i*60+60+c) Mod 1080,2)
                    angle=atan2(a2y-a1y,a2x-a1x)/pi*180
                    clpx=a1x
                    clpy=a1y
                    move_circle_entities(clpx,clpy,clp2cs,clp2ce)
                    rotate_circle_entities(clpx,clpy,angle,clp2cs,clp2ce)
            End Select
        Next
        show_entities
        Sleep 1
    Next
Loop
End

Sub show_entities()
    ScreenLock
    Cls
    Dim As Integer i,clr
    clr=15
    For i=1 To linesc
        Select Case i
            Case sprocket_1_linesc_start
                clr=14
            Case sprocket_2_linesc_start
                clr=15            
        End Select
        Line(lines(i,1),lines(i,2))-(lines(i,3),lines(i,4)),clr
    Next
    For i=1 To circlesc
        Select Case i
            Case sprocket_1_circlesc_start
                clr=14            
            Case sprocket_1_circlesc_start
                clr=15            
            Case chain_link_piece_1_circlesc_start
                clr=3
        End Select
        Select Case circles(i,0)
            Case 1
                Circle(circles(i,1),circles(i,2)),circles(i,3),clr
            Case 2
                Circle(circles(i,1),circles(i,2)),circles(i,3),clr,circles(i,4),circles(i,5)
            Case 3
                plotellipse(circles(i,1),circles(i,2),circles(i,3),circles(i,4),circles(i,5),circles(i,6),circles(i,7))
        End Select
    Next
    ScreenUnLock
End Sub

Function mymod(n As Double,m As Integer) As Double
    Select Case n
        Case 0
            mymod = 0
        Case CDbl(m)
            mymod = CDbl(m)
        Case Else
            If InStr(Str(n),"e")<>0 Then
                mymod=0
            Else
                If InStr(Str(n),".")<>0 Then
                    mymod=Val(Str(val(Mid(Str(n),1,InStr(Str(n),".")-1)) Mod m)+"."+Mid(Str(n),InStr(Str(n),".")+1))
                Else
                    mymod = (n Mod m)
                EndIf
            End If
    End Select
End Function


Sub move_entities(move_x As Double, move_y As Double, Ls As Integer,Le As Integer, Cs As Integer, Ce As Integer)
    Dim As Integer i
    for i = Ls to Le
        lines(i,1)+=move_x
        lines(i,2)+=move_y
        lines(i,3)+=move_x
        lines(i,4)+=move_y
    Next
    For i = Cs To Ce
        circles(i,1)+=move_x
        circles(i,2)+=move_y
    Next
End Sub

Sub move_circle_entities(move_x As Double, move_y As Double, Cs As Integer, Ce As Integer)
    Dim As Integer i
    For i = Cs To Ce
        circles(i,1)+=move_x
        circles(i,2)+=move_y
    Next
End Sub

Sub move_line_entities(move_x As Double, move_y As Double, Ls As Integer,Le As Integer)
    Dim As Integer i
    for i = Ls to Le
        lines(i,1)+=move_x
        lines(i,2)+=move_y
        lines(i,3)+=move_x
        lines(i,4)+=move_y
    Next
End Sub









Sub rotate_entities(pivot_pt_x As Double, pivot_pt_y As Double, rotation_angle As Double, Ls As Integer,Le As Integer, Cs As Integer, Ce As Integer)
    Dim As Integer i,j
    Dim As Double x1,y1,x2,y2,x1p,y1p,x2p,y2p
    Dim As Double arcangle,arcstart,arcend,arcendpoint1x,arcendpoint1y,arcendpoint2x,arcendpoint2y
    
    for i = Ls to Le
        x1p=lines(i,1)-pivot_pt_x
        y1p=lines(i,2)-pivot_pt_y
        x2p=lines(i,3)-pivot_pt_x
        y2p=lines(i,4)-pivot_pt_y
        lines(i,1)=x1p*cos(rotation_angle*pi/180) - y1p*sin(rotation_angle*pi/180)+pivot_pt_x
        lines(i,2)=y1p*cos(rotation_angle*pi/180) + x1p*sin(rotation_angle*pi/180)+pivot_pt_y
        lines(i,3)=x2p*cos(rotation_angle*pi/180) - y2p*sin(rotation_angle*pi/180)+pivot_pt_x
        lines(i,4)=y2p*cos(rotation_angle*pi/180) + x2p*sin(rotation_angle*pi/180)+pivot_pt_y
    Next

    For i = Cs To Ce
        x1=circles(i,1)
        y1=circles(i,2)
        x1p=x1-pivot_pt_x
        y1p=y1-pivot_pt_y
        x1=x1p*cos(rotation_angle*pi/180) - y1p*sin(rotation_angle*pi/180)+pivot_pt_x
        y1=y1p*cos(rotation_angle*pi/180) + x1p*sin(rotation_angle*pi/180)+pivot_pt_y
        Select Case circles(i,0)
            Case 1
                circles(i,1)=x1
                circles(i,2)=y1
            Case 2
                arcendpoint1x=circles(i,1)+cos(circles(i,4))*circles(i,3)
                arcendpoint1y=circles(i,2)+sin(circles(i,4))*circles(i,3)
                arcendpoint2x=circles(i,1)+cos(circles(i,5))*circles(i,3)
                arcendpoint2y=circles(i,2)+sin(circles(i,5))*circles(i,3)
                x1p=arcendpoint1x-pivot_pt_x
                y1p=arcendpoint1y-pivot_pt_y
                x2=x1p*cos(rotation_angle*pi/180) - y1p*sin(rotation_angle*pi/180)+pivot_pt_x
                y2=y1p*cos(rotation_angle*pi/180) + x1p*sin(rotation_angle*pi/180)+pivot_pt_y
                arcangle=atan2((y1-y2)*-1,(x1-x2)*-1)/pi*180
                arcangle+=360
                arcangle=mymod(arcangle,360)
                arcstart=arcangle*PI/180
                x1p=arcendpoint2x-pivot_pt_x
                y1p=arcendpoint2y-pivot_pt_y
                x2=x1p*cos(rotation_angle*pi/180) - y1p*sin(rotation_angle*pi/180)+pivot_pt_x
                y2=y1p*cos(rotation_angle*pi/180) + x1p*sin(rotation_angle*pi/180)+pivot_pt_y
                arcangle=atan2((y1-y2)*-1,(x1-x2)*-1)/pi*180
                arcangle+=360
                arcangle=mymod(arcangle,360)
                arcend=arcangle*PI/180
                circles(i,1)=x1
                circles(i,2)=y1
                circles(i,4)=arcstart
                circles(i,5)=arcend
            Case 3,4'rotating ellipses
                circles(i,1)=x1
                circles(i,2)=y1
                circles(i,7)=mymod(circles(i,7)+rotation_angle,360)
        End Select
    Next
End Sub

Sub rotate_circle_entities(pivot_pt_x As Double, pivot_pt_y As Double, rotation_angle As Double, Cs As Integer, Ce As Integer)
    Dim As Integer i,j
    Dim As Double x1,y1,x2,y2,x1p,y1p,x2p,y2p
    Dim As Double arcangle,arcstart,arcend,arcendpoint1x,arcendpoint1y,arcendpoint2x,arcendpoint2y
    
    For i = Cs To Ce
        x1=circles(i,1)
        y1=circles(i,2)
        x1p=x1-pivot_pt_x
        y1p=y1-pivot_pt_y
        x1=x1p*cos(rotation_angle*pi/180) - y1p*sin(rotation_angle*pi/180)+pivot_pt_x
        y1=y1p*cos(rotation_angle*pi/180) + x1p*sin(rotation_angle*pi/180)+pivot_pt_y
        Select Case circles(i,0)
            Case 1
                circles(i,1)=x1
                circles(i,2)=y1
            Case 2
                arcendpoint1x=circles(i,1)+cos(circles(i,4))*circles(i,3)
                arcendpoint1y=circles(i,2)+sin(circles(i,4))*circles(i,3)
                arcendpoint2x=circles(i,1)+cos(circles(i,5))*circles(i,3)
                arcendpoint2y=circles(i,2)+sin(circles(i,5))*circles(i,3)
                x1p=arcendpoint1x-pivot_pt_x
                y1p=arcendpoint1y-pivot_pt_y
                x2=x1p*cos(rotation_angle*pi/180) - y1p*sin(rotation_angle*pi/180)+pivot_pt_x
                y2=y1p*cos(rotation_angle*pi/180) + x1p*sin(rotation_angle*pi/180)+pivot_pt_y
                arcangle=atan2((y1-y2)*-1,(x1-x2)*-1)/pi*180
                arcangle+=360
                arcangle=mymod(arcangle,360)
                arcstart=arcangle*PI/180
                x1p=arcendpoint2x-pivot_pt_x
                y1p=arcendpoint2y-pivot_pt_y
                x2=x1p*cos(rotation_angle*pi/180) - y1p*sin(rotation_angle*pi/180)+pivot_pt_x
                y2=y1p*cos(rotation_angle*pi/180) + x1p*sin(rotation_angle*pi/180)+pivot_pt_y
                arcangle=atan2((y1-y2)*-1,(x1-x2)*-1)/pi*180
                arcangle+=360
                arcangle=mymod(arcangle,360)
                arcend=arcangle*PI/180
                circles(i,1)=x1
                circles(i,2)=y1
                circles(i,4)=arcstart
                circles(i,5)=arcend
            Case 3,4'rotating ellipses
                circles(i,1)=x1
                circles(i,2)=y1
                circles(i,7)=mymod(circles(i,7)+rotation_angle,360)
        End Select
    Next
End Sub

Sub rotate_line_entities(pivot_pt_x As Double, pivot_pt_y As Double, rotation_angle As Double, Ls As Integer,Le As Integer)
    Dim As Integer i,j
    Dim As Double x1p,y1p,x2p,y2p
    
    for i = Ls to Le
        x1p=lines(i,1)-pivot_pt_x
        y1p=lines(i,2)-pivot_pt_y
        x2p=lines(i,3)-pivot_pt_x
        y2p=lines(i,4)-pivot_pt_y
        lines(i,1)=x1p*cos(rotation_angle*pi/180) - y1p*sin(rotation_angle*pi/180)+pivot_pt_x
        lines(i,2)=y1p*cos(rotation_angle*pi/180) + x1p*sin(rotation_angle*pi/180)+pivot_pt_y
        lines(i,3)=x2p*cos(rotation_angle*pi/180) - y2p*sin(rotation_angle*pi/180)+pivot_pt_x
        lines(i,4)=y2p*cos(rotation_angle*pi/180) + x2p*sin(rotation_angle*pi/180)+pivot_pt_y
    Next
End Sub













Sub plotellipse(ex1 As Double,ey1 As Double,er1 As Double,estart As Double,eend As Double,er2 As Double,eangle As Double)
    '1x,2y,3z,4r,5color,6start,7end,8aspect,9=1(circle)2(arc)3(ellips)4(ellipticalarc),10group,11 is ellipse rotation , 12 block
    Dim As Double i,x1p,y1p
    Dim As Double eplotx,eploty,eplotxp,eplotyp,easpect,eresolution,elength
    Dim As BOOLEAN eplot
    If estart>eend Then
        elength=360+eend
    Else
        elength=eend
    EndIf
    eplot=FALSE
    eresolution=1
    'plotellipse
    For i = estart To elength Step eresolution
        eplotx=Cos(i*pi/180)*er1*Cos(eangle*pi/180) - Sin(i*pi/180)*er2*Sin(eangle*pi/180)+ex1
        eploty=Cos(i*pi/180)*er1*Sin(eangle*pi/180) + Sin(i*pi/180)*er2*Cos(eangle*pi/180)+ey1

        If eplot=false Then
            eplot=TRUE
        Else
            Line(eplotx,eploty)-(eplotxp,eplotyp)
        EndIf
        eplotxp=eplotx
        eplotyp=eploty
    Next

    x1p=Cos(eend*pi/180)*er1
    y1p=Sin(eend*pi/180)*er2
    eplotx=x1p*Cos(eangle*pi/180) - y1p*Sin(eangle*pi/180)+ex1
    eploty=y1p*Cos(eangle*pi/180) + x1p*Sin(eangle*pi/180)+ey1
    Line(eplotx,eploty)-(eplotxp,eplotyp)
End Sub

Sub read_entity_data()
    Dim As String entity_type
    Dim As Integer i,j,entity_count
    entity_type=""
    entity_count=0
    Do
        Read entity_type
        Read entity_count
        Select Case entity_type
            Case "ENTITY DATA START"
                'begin filling line and circle arrays
            Case "ENTITY DATA END"
                Exit Do
            Case "LINE"
                'Print "Line"
                linesc+=entity_count
                ReDim Preserve lines(linesc,4)
                For i = linesc-entity_count+1 To linesc
                    For j=1 To 4
                        Read lines(i,j)
                        'Print lines(i,j)
                    Next
                Next
            Case "CIRCLE"
                'Print "Circle"
                circlesc+=entity_count
                ReDim Preserve circles(circlesc,7)
                For i = circlesc-entity_count+1 To circlesc
                    circles(i,0)=1
                    For j=1 To 3
                        Read circles(i,j)
                        'Print i,circles(i,j)
                    Next
                Next
            Case "ARC"
                'Print "Arc"
                circlesc+=entity_count
                ReDim Preserve circles(circlesc,7)
                For i = circlesc-entity_count+1 To circlesc
                    circles(i,0)=2
                    For j=1 To 5
                        Read circles(i,j)
                        'Print i,circles(i,j)
                    Next
                Next
            Case "ELLIPSE"
                'Print "Ellipse"
                circlesc+=entity_count
                ReDim Preserve circles(circlesc,7)
                For i = circlesc-entity_count+1 To circlesc
                    circles(i,0)=3
                    For j=1 To 7
                        Read circles(i,j)
                        'Print i,circles(i,j)
                    Next
                Next
        End Select
    Loop
End Sub

Sub zoominpan()
    Dim As Double panx,pany,panxf,panyf
    'viewsset=FALSE
    'mousexp=mousex-1
    'tempmousex=mousexp-1
    If wx2-wx1<=maxzoomin Then Exit Sub
    panxf=(mousex-wx1)/(wx2-wx1)
    panyf=(mousey-wy1)/(wy2-wy1)
    wx1=wx1+wzoom
    wy1=wy1+wzoom
    wx2=wx2-wzoom
    wy2=wy2-wzoom
    panx=wx1+int((wx2-wx1)*panxf)
    pany=wy1+Int((wy2-wy1)*panyf)
    wx1=wx1+(mousex-panx)
    wx2=wx2+(mousex-panx)
    wy1=wy1+(mousey-pany)
    wy2=wy2+(mousey-pany)
    'inview()
    'redraw
    wzoom=(wx2-wx1)/wzoomt
    If wzoom<20 Then wzoom=20
End Sub
Sub zoomoutpan()
    Dim As Double panx,pany,panxf,panyf
    'viewsset=FALSE
    'mousexp=mousex-1
    'tempmousex=mousexp-1
    ''If wx2-wx1>160000 Then Exit Sub --- what is the limit ???
    'If selentity=true and snapenable=true Then
    '    mousex=fxm
    '    mousey=fym
    'EndIf
    panxf=(mousex-wx1)/(wx2-wx1)
    panyf=(mousey-wy1)/(wy2-wy1)
    wx1=wx1-wzoom
    wy1=wy1-wzoom
    wx2=wx2+wzoom
    wy2=wy2+wzoom
    panx=wx1+Int((wx2-wx1)*panxf)
    pany=wy1+Int((wy2-wy1)*panyf)
    wx1=wx1+(mousex-panx)
    wx2=wx2+(mousex-panx)
    wy1=wy1+(mousey-pany)
    wy2=wy2+(mousey-pany)
    'inview()
    'redraw
    wzoom=(wx2-wx1)/wzoomt
End Sub





'big sprocket
Data "ENTITY DATA START"
DATA 0
'lines data x1,y1,x2,y2
DATA "LINE", 41
DATA-97.9202480392088, 6.072364661790445,-99.87901299359182, 13.03107389343951
DATA-95.00415385146233, 24.48385875660966,-99.01740943671227, 18.471024655737
DATA-95.00415385146239,-24.48385875660942,-99.01740943671233,-18.47102465573676
DATA-97.92024803920883,-6.072364661790189,-99.87901299359187,-13.03107389343926
DATA-82.7883911518724,-52.64343149083753,-88.46329194930918,-48.16505061641327
DATA-91.25122609839222,-36.03418271844164,-90.96376286065539,-43.25760013709514
DATA-62.46872390569825,-75.64989836238762,-69.24977108590986,-73.14434583711476
DATA-75.6498983623878,-62.46872390569804,-73.14434583711497,-69.24977108590967
DATA-36.03418271844185,-91.25122609839211,-43.25760013709537,-90.96376286065528
DATA-52.64343149083776,-82.78839115187229,-48.16505061641353,-88.46329194930904
DATA-6.07236466179045,-97.9202480392088,-13.03107389343952,-99.87901299359182
DATA-24.48385875660967,-95.00415385146231,-18.47102465573702,-99.01740943671227
DATA 24.48385875660942,-95.00415385146239, 18.47102465573675,-99.01740943671233
DATA 6.072364661790182,-97.92024803920883, 13.03107389343925,-99.87901299359184
DATA 52.64343149083753,-82.78839115187243, 48.16505061641328,-88.46329194930918
DATA 36.03418271844162,-91.25122609839225, 43.25760013709513,-90.96376286065542
DATA 75.64989836238763,-62.46872390569827, 73.14434583711477,-69.24977108590984
DATA 62.46872390569806,-75.64989836238782, 69.24977108590966,-73.14434583711496
DATA 91.25122609839212,-36.03418271844187, 90.96376286065529,-43.25760013709537
DATA 82.7883911518723,-52.64343149083776, 88.46329194930904,-48.16505061641352
DATA 97.92024803920879,-6.072364661790459, 99.8790129935918,-13.03107389343953
DATA 95.00415385146233,-24.48385875660968, 99.01740943671229,-18.47102465573703
DATA 95.00415385146238, 24.48385875660941, 99.01740943671233, 18.47102465573674
DATA 97.92024803920883, 6.072364661790175, 99.87901299359184, 13.03107389343924
DATA 82.78839115187243, 52.64343149083753, 88.46329194930915, 48.16505061641327
DATA 91.25122609839224, 36.03418271844164, 90.96376286065539, 43.25760013709511
DATA 62.46872390569824, 75.64989836238762, 69.24977108590984, 73.14434583711476
DATA 75.64989836238782, 62.46872390569804, 73.14434583711496, 69.24977108590964
DATA 36.03418271844188, 91.25122609839211, 43.25760013709538, 90.96376286065525
DATA 52.64343149083777, 82.78839115187229, 48.16505061641352, 88.46329194930904
DATA 6.072364661790466, 97.92024803920877, 13.03107389343953, 99.87901299359179
DATA 24.48385875660969, 95.00415385146233, 18.47102465573703, 99.01740943671227
DATA-24.48385875660939, 95.00415385146239,-18.47102465573673, 99.01740943671233
DATA-6.072364661790184, 97.92024803920883,-13.03107389343924, 99.87901299359184
DATA-52.64343149083752, 82.78839115187243,-48.16505061641326, 88.46329194930918
DATA-36.03418271844161, 91.25122609839225,-43.25760013709513, 90.96376286065542
DATA-75.64989836238765, 62.46872390569824,-73.14434583711476, 69.24977108590984
DATA-62.46872390569804, 75.64989836238782,-69.24977108590964, 73.14434583711496
DATA-91.25122609839211, 36.03418271844187,-90.96376286065525, 43.25760013709537
DATA-82.78839115187229, 52.64343149083778,-88.46329194930904, 48.16505061641352
DATA 0, 0, 3.3750779948604e-014, 95.88679832249493
'circles data x1,y1,radius
DATA "CIRCLE", 1
DATA 0, 0, 19.39421899515231
'arcs data x1,y1,radius,arc_start,arc_end
DATA "ARC", 80
DATA-95.88679832249493, 1.4210854715e-014, 5.3851648071345, 4.839942021295272, 1.612405967231461
DATA-93.54028134689141, 14.8153251089273, 9.778725152391161, 4.247965142473813, 4.446394041093257
DATA-93.54028134689141, 14.8153251089273, 9.778725152391161, 1.522632000727353, 1.721060899346796
DATA-93.54028134689141, 14.8153251089273, 6.58506425852097, 2.553049150547038, 3.415976891273562
DATA-91.193764371288,-29.63065021785411, 5.3851648071345, 5.154101286654246, 1.92656523259044
DATA-93.54028134689149,-14.81532510892681, 9.778725152391161, 4.562124407832798, 4.760553306452237
DATA-93.54028134689149,-14.81532510892681, 9.778725152391161, 1.836791266086334, 2.035220164705774
DATA-93.54028134689149,-14.81532510892681, 6.58506425852097, 2.867208415906022, 3.73013615663255
DATA-77.5740493791016,-56.36084594350514, 5.3851648071345, 5.468260552013228, 2.240724497949415
DATA-84.38390687519488,-42.99574808067943, 9.778725152391161, 4.876283673191771, 5.074712571811213
DATA-84.38390687519488,-42.99574808067943, 9.778725152391161, 2.150950531445313, 2.349379430064753
DATA-84.38390687519488,-42.99574808067943, 6.58506425852097, 3.181367681264999, 4.044295421991523
DATA-56.3608459435052,-77.57404937910157, 5.3851648071345, 5.782419817372208, 2.554883763308393
DATA-66.96744766130357,-66.96744766130321, 9.778725152391161, 5.190442938550754, 5.388871837170198
DATA-66.96744766130357,-66.96744766130321, 9.778725152391161, 2.465109796804287, 2.663538695423732
DATA-66.96744766130357,-66.96744766130321, 6.58506425852097, 3.495526946623976, 4.358454687350502
DATA-29.63065021785415,-91.19376437128797, 5.3851648071345, 6.096579082731184, 2.869043028667383
DATA-42.99574808067986,-84.38390687519468, 9.778725152391161, 5.504602203909734, 5.703031102529175
DATA-42.99574808067986,-84.38390687519468, 9.778725152391161, 2.77926906216327, 2.97769796078271
DATA-42.99574808067986,-84.38390687519468, 6.58506425852097, 3.809686211982957, 4.672613952709483
DATA-1.953992523340276e-014,-95.88679832249493, 5.3851648071345, 0.1275530409105824, 3.183202294026359
DATA-14.8153251089273,-93.54028134689141, 9.778725152391161, 5.818761469268709, 6.01719036788815
DATA-14.8153251089273,-93.54028134689141, 9.778725152391161, 3.093428327522249, 3.291857226141691
DATA-14.8153251089273,-93.54028134689141, 6.58506425852097, 4.123845477341936, 4.986773218068459
DATA 29.6306502178541,-91.193764371288, 5.3851648071345, 0.4417123062695653, 3.497361559385338
DATA 14.81532510892682,-93.54028134689149, 9.778725152391161, 6.132920734627694, 0.04816432606754741
DATA 14.81532510892682,-93.54028134689149, 9.778725152391161, 3.40758759288123, 3.60601649150067
DATA 14.81532510892682,-93.54028134689149, 6.58506425852097, 4.438004742700917, 5.300932483427442
DATA 56.36084594350514,-77.57404937910162, 5.3851648071345, 0.7558715716285392, 3.811520824744314
DATA 42.99574808067943,-84.38390687519488, 9.778725152391161, 0.1638946928070797, 0.3623235914265215
DATA 42.99574808067943,-84.38390687519488, 9.778725152391161, 3.721746858240208, 3.920175756859651
DATA 42.99574808067943,-84.38390687519488, 6.58506425852097, 4.752164008059895, 5.615091748786417
DATA 77.57404937910158,-56.3608459435052, 5.3851648071345, 1.070030836987521, 4.125680090103296
DATA 66.96744766130321,-66.96744766130355, 9.778725152391161, 0.4780539581660643, 0.6764828567855078
DATA 66.96744766130321,-66.96744766130355, 9.778725152391161, 4.035906123599186, 4.234335022218629
DATA 66.96744766130321,-66.96744766130355, 6.58506425852097, 5.066323273418876, 5.929251014145397
DATA 91.19376437128798,-29.63065021785415, 5.3851648071345, 1.384190102346496, 4.439839355462276
DATA 84.38390687519468,-42.99574808067986, 9.778725152391161, 0.7922132235250471, 0.9906421221444854
DATA 84.38390687519468,-42.99574808067986, 9.778725152391161, 4.350065388958166, 4.548494287577609
DATA 84.38390687519468,-42.99574808067986, 6.58506425852097, 5.380482538777852, 6.24341027950438
DATA 95.88679832249491,-2.842170943040401e-014, 5.3851648071345, 1.698349367705476, 4.753998620821255
DATA 93.54028134689142,-14.81532510892731, 9.778725152391161, 1.106372488884023, 1.304801387503465
DATA 93.54028134689142,-14.81532510892731, 9.778725152391161, 4.664224654317144, 4.862653552936588
DATA 93.54028134689142,-14.81532510892731, 6.58506425852097, 5.694641804136832, 0.2743842376837707
DATA 91.193764371288, 29.63065021785411, 5.3851648071345, 2.012508633064455, 5.068157886180231
DATA 93.54028134689149, 14.81532510892681, 9.778725152391161, 1.420531754243002, 1.618960652862446
DATA 93.54028134689149, 14.81532510892681, 9.778725152391161, 4.978383919676126, 5.176812818295567
DATA 93.54028134689149, 14.81532510892681, 6.58506425852097, 6.008801069495812, 0.5885435030427483
DATA 77.57404937910161, 56.36084594350514, 5.3851648071345, 2.326667898423436, 5.38231715153921
DATA 84.3839068751949, 42.99574808067943, 9.778725152391161, 1.734691019601983, 1.933119918221423
DATA 84.3839068751949, 42.99574808067943, 9.778725152391161, 5.292543185035105, 5.490972083654545
DATA 84.3839068751949, 42.99574808067943, 6.58506425852097, 0.03977502767520338, 0.902702768401731
DATA 56.36084594350518, 77.57404937910157, 5.3851648071345, 2.640827163782412, 5.696476416898193
DATA 66.96744766130355, 66.96744766130321, 9.778725152391161, 2.048850284960963, 2.247279183580403
DATA 66.96744766130355, 66.96744766130321, 9.778725152391161, 5.606702450394082, 5.805131349013524
DATA 66.96744766130355, 66.96744766130321, 6.58506425852097, 0.3539342930341827, 1.216862033760707
DATA 29.63065021785415, 91.19376437128797, 5.3851648071345, 2.954986429141391, 6.010635682257174
DATA 42.99574808067987, 84.38390687519468, 9.778725152391161, 2.363009550319942, 2.561438448939382
DATA 42.99574808067987, 84.38390687519468, 9.778725152391161, 5.920861715753063, 6.119290614372505
DATA 42.99574808067987, 84.38390687519468, 6.58506425852097, 0.668093558393162, 1.53102129911969
DATA 3.3750779948604e-014, 95.88679832249493, 5.3851648071345, 3.269145694500375, 0.04160964043656391
DATA 14.81532510892732, 93.54028134689141, 9.778725152391161, 2.67716881567892, 2.875597714298361
DATA 14.81532510892732, 93.54028134689141, 9.778725152391161, 6.235020981112044, 0.1502645725518996
DATA 14.81532510892732, 93.54028134689141, 6.58506425852097, 0.982252823752143, 1.845180564478671
DATA-29.63065021785412, 91.193764371288, 5.3851648071345, 3.583304959859355, 0.3557689057955362
DATA-14.81532510892681, 93.54028134689149, 9.778725152391161, 2.991328081037897, 3.189756979657341
DATA-14.81532510892681, 93.54028134689149, 9.778725152391161, 0.2659949392914371, 0.4644238379108789
DATA-14.81532510892681, 93.54028134689149, 6.58506425852097, 1.296412089111122, 2.159339829837648
DATA-56.36084594350513, 77.5740493791016, 5.3851648071345, 3.897464225218333, 0.6699281711545243
DATA-42.99574808067943, 84.38390687519491, 9.778725152391161, 3.305487346396878, 3.50391624501632
DATA-42.99574808067943, 84.38390687519491, 9.778725152391161, 0.5801542046504129, 0.7785831032698581
DATA-42.99574808067943, 84.38390687519491, 6.58506425852097, 1.6105713544701, 2.473499095196629
DATA-77.57404937910157, 56.3608459435052, 5.3851648071345, 4.211623490577313, 0.9840874365135036
DATA-66.96744766130318, 66.96744766130355, 9.778725152391161, 3.619646611755859, 3.818075510375299
DATA-66.96744766130318, 66.96744766130355, 9.778725152391161, 0.8943134700093941, 1.092742368628841
DATA-66.96744766130318, 66.96744766130355, 6.58506425852097, 1.924730619829079, 2.787658360555602
DATA-91.19376437128797, 29.63065021785415, 5.3851648071345, 4.525782755936287, 1.298246701872485
DATA-84.38390687519468, 42.99574808067986, 9.778725152391161, 3.93380587711484, 4.132234775734278
DATA-84.38390687519468, 42.99574808067986, 9.778725152391161, 1.208472735368373, 1.406901633987815
DATA-84.38390687519468, 42.99574808067986, 6.58506425852097, 2.238889885188053, 3.101817625914583
DATA "ENTITY DATA END"
DATA 0

'small sprocket
Data "ENTITY DATA START"
DATA 0
'lines data x1,y1,x2,y2
DATA "LINE", 25
DATA-24.25747214638355, 54.51848019438589,-18.69707641887519, 59.13826305407355
DATA-6.251652986831032, 59.34312489724883,-13.37698837179155, 60.56377634995207
DATA-48.2668272075545, 35.08565275086517,-45.76127468228165, 41.86669993107675
DATA-35.08565275086495, 48.26682720755485,-41.86669993107654, 45.76127468228197
DATA-59.34312489724877, 6.251652986831377,-60.56377634995199, 13.37698837179189
DATA-54.51848019438584, 24.25747214638389,-59.13826305407347, 18.69707641887555
DATA-54.51848019438591,-24.25747214638349,-59.13826305407356,-18.69707641887513
DATA-59.34312489724884,-6.251652986830977,-60.56377634995209,-13.3769883717915
DATA-35.08565275086517,-48.2668272075545,-41.8666999310768,-45.76127468228166
DATA-48.26682720755475,-35.08565275086492,-45.76127468228192,-41.86669993107652
DATA-6.251652986831377,-59.34312489724877,-13.37698837179189,-60.56377634995199
DATA-24.25747214638389,-54.51848019438584,-18.69707641887555,-59.13826305407347
DATA 24.25747214638355,-54.51848019438589, 18.69707641887519,-59.13826305407355
DATA 6.251652986831032,-59.34312489724883, 13.37698837179155,-60.56377634995207
DATA 48.2668272075545,-35.08565275086517, 45.76127468228166,-41.8666999310768
DATA 35.08565275086492,-48.26682720755475, 41.86669993107652,-45.76127468228192
DATA 59.34312489724877,-6.251652986831377, 60.56377634995199,-13.37698837179189
DATA 54.51848019438584,-24.25747214638389, 59.13826305407347,-18.69707641887555
DATA 54.51848019438591, 24.25747214638349, 59.13826305407356, 18.69707641887513
DATA 59.34312489724884, 6.251652986830977, 60.56377634995209, 13.3769883717915
DATA 35.08565275086517, 48.2668272075545, 41.86669993107687, 45.76127468228167
DATA 48.26682720755475, 35.08565275086492, 45.76127468228187, 41.8666999310765
DATA 6.251652986831377, 59.34312489724877, 13.37698837179189, 60.56377634995199
DATA 24.25747214638389, 54.51848019438584, 18.69707641887555, 59.13826305407347
DATA 0, 0, 5.87446757904786e-014, 57.95554957734412
'circles data x1,y1,radius
DATA "CIRCLE", 1
DATA 0, 0, 11.01923788646684
'arcs data x1,y1,radius,arc_start,arc_end
DATA "ARC", 48
DATA-28.97777478867205, 50.19097822426848, 5.3851648071345, 3.688024714979013, 0.460488660915196
DATA-14.48888739433575, 54.07326390080636, 9.778725152391161, 3.096047836157557, 3.294476734777001
DATA-14.48888739433575, 54.07326390080636, 9.778725152391161, 0.3707146944110952, 0.5691435930305386
DATA-14.48888739433575, 54.07326390080636, 6.58506425852097, 1.401131844230782, 2.264059584957308
DATA-50.19097822426848, 28.97777478867205, 5.3851648071345, 4.211623490577305, 0.984087436513495
DATA-39.5843765064701, 39.58437650647054, 9.778725152391161, 3.619646611755854, 3.818075510375299
DATA-39.5843765064701, 39.58437650647054, 9.778725152391161, 0.8943134700093941, 1.092742368628841
DATA-39.5843765064701, 39.58437650647054, 6.58506425852097, 1.924730619829083, 2.787658360555608
DATA-57.95554957734413, 1.067878424576563e-013, 5.3851648071345, 4.735222266175607, 1.507686212111794
DATA-54.07326390080625, 14.48888739433632, 9.778725152391161, 4.143245387354153, 4.3416742859736
DATA-54.07326390080625, 14.48888739433632, 9.778725152391161, 1.417912245607691, 1.616341144227137
DATA-54.07326390080625, 14.48888739433632, 6.58506425852097, 2.44832939542738, 3.311257136153909
DATA-50.19097822426853,-28.97777478867207, 5.3851648071345, 5.258821041773906, 2.031284987710093
DATA-54.07326390080643,-14.48888739433571, 9.778725152391161, 4.666844162952454, 4.865273061571899
DATA-54.07326390080643,-14.48888739433571, 9.778725152391161, 1.941511021205992, 2.139939919825437
DATA-54.07326390080643,-14.48888739433571, 6.58506425852097, 2.97192817102568, 3.834855911752206
DATA-28.9777747886721,-50.19097822426849, 5.3851648071345, 5.782419817372201, 2.554883763308391
DATA-39.58437650647054,-39.5843765064701, 9.778725152391161, 5.19044293855075, 5.388871837170198
DATA-39.58437650647054,-39.5843765064701, 9.778725152391161, 2.465109796804289, 2.663538695423734
DATA-39.58437650647054,-39.5843765064701, 6.58506425852097, 3.495526946623978, 4.358454687350507
DATA-5.87446757904786e-014,-57.95554957734412, 5.3851648071345, 0.02283328579091916, 3.07848253890669
DATA-14.48888739433632,-54.07326390080625, 9.778725152391161, 5.714041714149051, 5.912470612768496
DATA-14.48888739433632,-54.07326390080625, 9.778725152391161, 2.988708572402589, 3.187137471022033
DATA-14.48888739433632,-54.07326390080625, 6.58506425852097, 4.019125722222277, 4.882053462948803
DATA 28.97777478867207,-50.19097822426853, 5.3851648071345, 0.5464320613892163, 3.602081314504988
DATA 14.48888739433576,-54.07326390080642, 9.778725152391161, 6.23764048974735, 0.1528840811872107
DATA 14.48888739433576,-54.07326390080642, 9.778725152391161, 3.512307348000888, 3.710736246620333
DATA 14.48888739433576,-54.07326390080642, 6.58506425852097, 4.542724497820575, 5.405652238547104
DATA 50.19097822426849,-28.9777747886721, 5.3851648071345, 1.070030836987512, 4.125680090103288
DATA 39.5843765064701,-39.58437650647054, 9.778725152391161, 0.4780539581660626, 0.6764828567855078
DATA 39.5843765064701,-39.58437650647054, 9.778725152391161, 4.035906123599186, 4.234335022218632
DATA 39.5843765064701,-39.58437650647054, 6.58506425852097, 5.066323273418876, 5.929251014145402
DATA 57.95554957734413,-1.067878424576563e-013, 5.3851648071345, 1.593629612585816, 4.649278865701581
DATA 54.07326390080625,-14.48888739433632, 9.778725152391161, 1.001652733764362, 1.200081632383808
DATA 54.07326390080625,-14.48888739433632, 9.778725152391161, 4.559504899197487, 4.757933797816929
DATA 54.07326390080625,-14.48888739433632, 6.58506425852097, 5.589922049017172, 0.1696644825641127
DATA 50.19097822426858, 28.97777478867208, 5.3851648071345, 2.117228388184113, 5.172877641299886
DATA 54.07326390080648, 14.48888739433572, 9.778725152391161, 1.52525150936266, 1.723680407982106
DATA 54.07326390080648, 14.48888739433572, 9.778725152391161, 5.083103674795785, 5.28153257341523
DATA 54.07326390080648, 14.48888739433572, 6.58506425852097, 6.113520824615471, 0.6932632581624133
DATA 28.97777478867215, 50.19097822426851, 5.3851648071345, 2.640827163782413, 5.696476416898179
DATA 39.58437650647056, 39.58437650647005, 9.778725152391161, 2.048850284960961, 2.247279183580404
DATA 39.58437650647056, 39.58437650647005, 9.778725152391161, 5.606702450394082, 5.80513134901353
DATA 39.58437650647056, 39.58437650647005, 6.58506425852097, 0.3539342930341862, 1.216862033760712
DATA 5.87446757904786e-014, 57.95554957734412, 5.3851648071345, 3.164425939380712, 6.220075192496474
DATA 14.48888739433632, 54.07326390080625, 9.778725152391161, 2.572449060559258, 2.770877959178705
DATA 14.48888739433632, 54.07326390080625, 9.778725152391161, 6.130301225992383, 0.04554481743223981
DATA 14.48888739433632, 54.07326390080625, 6.58506425852097, 0.8775330686324797, 1.740460809359009
DATA "ENTITY DATA END"
DATA 0


'chain piece 1
Data "ENTITY DATA START"
DATA 0
'arcs data x1,y1,radius,arc_start,arc_end
DATA "ARC", 8
DATA 15, 9.42809041582052, 7.716909687891069, 3.702733079760211, 5.722044881009169
DATA 15,-9.428090415820577, 7.716909687891069, 0.5611404261704176, 2.580452227419375
DATA 0, 0, 9.999999999999982, 0.5611404261704158, 1.570796326794897
DATA 0, 0, 9.999999999999982, 4.71238898038469, 5.72204488100917
DATA 0, 0, 5.385164807134504, 4.71238898038469, 1.570796326794897
DATA 30, 0, 5.385164807134504, 1.570796326794897, 4.71238898038469
DATA 30, 0, 9.999999999999982, 1.570796326794897, 2.580452227419377
DATA 30, 0, 9.999999999999982, 3.702733079760208, 4.712388980384688
DATA "ENTITY DATA END"
DATA 0

'chain piece 2
Data "ENTITY DATA START"
DATA 0
'arcs data x1,y1,radius,arc_start,arc_end
DATA "ARC", 6
DATA 15, 9.428090415820492, 7.716909687891069, 3.702733079760211, 5.722044881009169
DATA 15,-9.428090415820606, 7.716909687891069, 0.5611404261704176, 2.580452227419375
DATA 0, 0, 5.385164807134504, 4.71238898038469, 1.570796326794897
DATA 30, 0, 9.999999999999982, 1.570796326794897, 4.71238898038469
DATA 30, 0, 5.385164807134504, 1.570796326794897, 4.71238898038469
DATA 0, 0, 9.999999999999982, 4.71238898038469, 7.853981633974483
DATA "ENTITY DATA END"
DATA 0



'chain piece 3
Data "ENTITY DATA START"
DATA 0
'arcs data x1,y1,radius,arc_start,arc_end
DATA "ARC", 4
DATA 30.00000000000001, 0, 9.999999999999982, 0.5611404261704158, 2.580452227419379
DATA 30.00000000000001, 0, 9.999999999999982, 3.702733079760208, 5.72204488100917
DATA-5.329070518200751e-015, 0, 9.999999999999982, 0.5611404261704158, 2.580452227419379
DATA-5.329070518200751e-015, 0, 9.999999999999982, 3.702733079760208, 5.72204488100917
DATA "ENTITY DATA END"
DATA 0
Find all posts by this user
Like Post



Forum Jump:


User(s) browsing this thread: 1 Guest(s)




QB64 Member Project - Sabotage
QB64 Member Project - Martin Fractals version one
QB64 Member Project - Input
QB64 Member Project - Score 4
QB64 Member Project - Connect Four
QB64 Member Project - Exit
QB64 Member Project - Rubix's Magic
QB64 Member Project - Rotating Background
QB64 Member Project - Line Thickness
QB64 Member Project - Spinning Color Wheel
QB64 Member Project - ARB Checkers
QB64 Member Project - Martin Fractals version four
QB64 Member Project - Red Scrolling LED Sign
QB64 Member Project - Swirl
QB64 Member Project - Kings Vallery version two
QB64 Member Project - Color Triangles
QB64 Member Project - Domain
QB64 Member Project - Qubic
QB64 Member Project - Amazon
QB64 Member Project - STxAxTIC 3D World
QB64 Member Project - 9 Board
QB64 Member Project - Splatter
QB64 Member Project - Dakapo
QB64 Member Project - Martin Fractals version two
QB64 Member Project - Algeria Weather
QB64 Member Project - Inside Moves
QB64 Member Project - OpenGL Triangles
QB64 Member Project - Martin Fractals version three
QB64 Member Project - Blokus
QB64 Member Project - Color Rotating Text
QB64 Member Project - Overboard
QB64 Member Project - Kings Valley verion one
QB64 Member Project - Basic Dithering
QB64 Member Project - Touche
QB64 Member Project - Pivet version one
QB64 Member Project - MAPTRIANGLE
QB64 Member Project - Isolation
QB64 Member Project - RGB Color Wheel
QB64 Member Project - Othello
QB64 Member Project - Dreamy Clock
QB64 Member Project - Foursight
QB64 Member Project - Point Blank
QB64 Member Project - Full Color LED Sign
QB64 Member Project - Kobolts Monopoly
QB64 Member Project - Quarto
QB64 Member Project - Spiro Roses
QB64 Member Project - Kings Court
QB64 Member Project - Pivot version two
QB64 Member Project - Bowditch curve