DSG_Line ~ Linja liukukoolla.

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
Post Reply
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

DSG_Line ~ Linja liukukoolla.

Post by MaGetzUb »

Tällä funktiolla voi siis piirtää linjan kahdeen pisteen välille liukuvalla koolla.
Pitemmittä jaaditteluitta:
EDIT:

Oli tullut moka alemmassa koodissa, korjasin. :)

Code: Select all

Function DSG_Line(x,y,x2,y2,r,r2=-1,style = 2)
    If r2 < 0 Then r2 = r
    angle# = GetAngle(x,y,x2,y2)
    d# = Distance(x,y,x2,y2)
    For i = 0 To d#
        dr = r + (Float(r2) - Float(r)) / d# * i    
        Select style
            Case 1
                Box x-dr/2+Cos(angle#)*i,y-dr/2-Sin(angle#)*i,dr,dr          
            Case 2
                Circle x-dr/2+Cos(angle#)*i,y-dr/2-Sin(angle#)*i,dr
        EndSelect 
    Next i 
EndFunction
Esimerkki: (funktio myös esimerkissä mukana, älkää siis turhaa vaivautuko liittämään ylempää koodinpätkää alla olevaan koodiin uudestaan.) :)

Code: Select all

Repeat 

    Text 0,0,"Hiiren rullasta vaihtaa toisen pisteen paksuutta"

    DSG_Line(200,150,MouseX(),MouseY(),20,Mousez())

DrawScreen
Until KeyHit(1)


Function DSG_Line(x,y,x2,y2,r,r2=-1,style = 2)
    If r2 < 0 Then r2 = r
    angle# = GetAngle(x,y,x2,y2)
    d# = Distance(x,y,x2,y2)
    For i = 0 To d#
        dr = r + (Float(r2) - Float(r)) / d# * i    
        Select style
            Case 1
                Box x-dr/2+Cos(angle#)*i,y-dr/2-Sin(angle#)*i,dr,dr          
            Case 2
                Circle x-dr/2+Cos(angle#)*i,y-dr/2-Sin(angle#)*i,dr
        EndSelect 
    Next i 
EndFunction 
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Post Reply