Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: VB Viivat jouhevaks

Sivun loppuun

Milu [11.01.2004 01:32:26]

#

CorelDraw9:ssä on ainakin sellainen ominaisuus kun kynällä piirtää viivaa ja jos siitä tulee "rösöinen" se automaattisesti tasoittaa sen, eli pyöristää terävät reunat.

Mitenköhän olis VB:llä tai yleensäkkin mahdollisuus toteuttaa samaa kun line käskyllä lyhysissä pätkissä piirtää viivoja, tulis sellaiseen käyränpiirtoon jossa käyrä muodostuu pisteiden väliin piirretyistä viivoista.

keskiarvoistus, keskihajonta vai mikä??

Wizard [11.01.2004 01:53:44]

#

Keskihajonta on ainakin tilastomatematiikkaa =) Oli ihan pakko sanoa kun oli siitä eilen lauantaina pieni testin poikanen...

Milu [11.01.2004 02:05:30]

#

Juu, matemattisesti ne pisteiden kohdat pitäis varmaankin laskee ja sitten pisteillä piirtää ne viivat, mutta miten?

thefox [11.01.2004 02:08:17]

#

Siis jotain käyrää haluat? Tee vaikka Beziér-käyrällä, implementaatioita varmaan löytyy ihan valmiitakin.

Milu [11.01.2004 02:33:13]

#

Onko osunnut silmään vb:llä tehtyjä esimerkkejä Beziér käyrästä?

setä [11.01.2004 02:53:18]

#

Samaa ongelmaa olen itsekin miettinyt. Eräs ratkaisu on piirtää viiva siten, että vedät hiirellä sopivan mittaista pätkää, jonka toinen pää piirtää viivaa.

thefox [11.01.2004 04:10:39]

#

lainaus:

Onko osunnut silmään vb:llä tehtyjä esimerkkejä Beziér käyrästä?

Eipä ole mutta voin sinulle sellaisen vääntää kunhan kerkeän.

setä [11.01.2004 11:03:00]

#

Tässä olisi eräs tapa saada nättiä käyrää. Esimerkissä käyrä piirretään suoraan formille. Formin ScaleMode=1

Option Explicit
Dim xx As Single, yy As Single
Dim dx As Single, dy As Single
Dim s As Single, ss As Single

Private Sub Form_Load()
  ss = 700 'oletusarvo ss:lle
End Sub

'käyrän aloituspiste
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  PSet (X, Y)
  xx = X: yy = Y
End Sub

'piirretään käyrää
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 0 Then Exit Sub
  'asetetaan ss eli hännän pituus
  If Shift Then ss = Sqr((X - xx) ^ 2 + (Y - yy) ^ 2): Exit Sub
  dx = X - xx: dy = Y - yy
  s = Sqr(dx * dx + dy * dy)
  If s > ss Then
    s = s - ss
    Line -Step(s * dx / ss, s * dy / ss)
    xx = xx + s * dx / ss: yy = yy + s * dy / ss
  End If
End Sub

Milu [11.01.2004 12:37:59]

#

Tuo oli kätevä väsäys.

Tossa on vaan se, kun vetää viivaa ja jyrkästi muuttaa suuntaa se tekee terävän kulman, pitäis saada sillein että se kulma puöristyis.

setä [11.01.2004 12:51:59]

#

Tuosa on hiirtä liikuteltava tietyn matkan paassä käyrän loppupisteestä. kaarevuuden voi säädellä loivaksi tai jyrkäksi ihan hiiren liikkeillä. Teräviä kulmia saa käyrään, jos etäisyyttä pienentää ja muuttaa suuntaa samalla. Vähän koodia lisäämällä mukaan saa "kuminauhaviivan", joka helpottaa piirtämistä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta