Za crtanje i rotiranje kuhinja u 3D u VB6 prvo moras resiti rotiranje kocke tj.kvadra, koji je u stvari kuhinjski element. Zahteva poznavanje matematike. Kasnije sam sve to uradio sa API.
Code:
'Program: Rotacija kvadra
'Autor: rgdrajko
'Datum: 29.10.2002
Public duzina As Single
Public sirina As Single
Public visina As Single
Public xpocetak As Single
Public ypocetak As Single
Public ugao As Integer
Public minugaopromene As Integer
Public minpocugaoduzine As Integer
Public minpocugaosirine As Integer
Public povecavanjeugla As Boolean
Public vremerotiranja As Long
Const pi = 3.1415926
Private Sub Form_Activate()
'Stvarni ugao deli sa 2
'Najbolje od 5 do 10(7)
minpocugaoduzine = 7
'Najbolje od 10 do 20(15)
minpocugaosirine = 15
minugaopromene = 1
duzina = 8
sirina = 3
visina = 6
xpocetak = 5
ypocetak = 12
vremerotiranja = 400
Timer1.Interval = vremerotiranja
Call crtanjekockeilikvadra
End Sub
Public Sub crtanjekockeilikvadra()
Cls
pocugaoduzine = minpocugaoduzine + ugao
ugaoduzine = 2 * pi * pocugaoduzine / 180
If ugaoduzine = 0 Then
povecavanjeugla = True
End If
horprojekcduzine = Cos(ugaoduzine) * duzina
vertprojekcduzine = Sin(ugaoduzine) * duzina
pocugaosirine = minpocugaosirine - ugao
ugaosirine = 2 * pi * pocugaosirine / 180
If ugaosirine = 0 Then
povecavanjeugla = False
End If
horprojekcsirine = Cos(ugaosirine) * sirina
vertprojekcsirine = Sin(ugaosirine) * sirina
'Zadnja donja linija
Line (xpocetak, ypocetak)-(xpocetak + horprojekcduzine, ypocetak - vertprojekcduzine)
'Zadnja gornja linija
Line (xpocetak, ypocetak - visina)-(xpocetak + horprojekcduzine, ypocetak - vertprojekcduzine - visina)
'Prednja donja linija
Line (xpocetak + horprojekcsirine, ypocetak + vertprojekcsirine)-(xpocetak + horprojekcsirine + horprojekcduzine, ypocetak + vertprojekcsirine - vertprojekcduzine)
'Prednja gornja linija
Line (xpocetak + horprojekcsirine, ypocetak + vertprojekcsirine - visina)-(xpocetak + horprojekcsirine + horprojekcduzine, ypocetak + vertprojekcsirine - vertprojekcduzine - visina)
'Zadnja leva vetikalna linija
Line (xpocetak, ypocetak)-(xpocetak, ypocetak - visina)
'Prednja leva vetikalna linija
Line (xpocetak + horprojekcsirine, ypocetak + vertprojekcsirine)-(xpocetak + horprojekcsirine, ypocetak + vertprojekcsirine - visina)
'Donja leva linija
Line (xpocetak, ypocetak)-(xpocetak + horprojekcsirine, ypocetak + vertprojekcsirine)
'Gornja leva linija
Line (xpocetak, ypocetak - visina)-(xpocetak + horprojekcsirine, ypocetak + vertprojekcsirine - visina)
'Zadnja desna vetikalna linija
Line (xpocetak + horprojekcduzine, ypocetak - vertprojekcduzine)-(xpocetak + horprojekcduzine, ypocetak - visina - vertprojekcduzine)
'Prednja desna vetikalna linija
Line (xpocetak + horprojekcduzine + horprojekcsirine, ypocetak - vertprojekcduzine + vertprojekcsirine)-(xpocetak + horprojekcduzine + horprojekcsirine, ypocetak - visina - vertprojekcduzine + vertprojekcsirine)
'Donja desna linija
Line (xpocetak + horprojekcduzine, ypocetak - vertprojekcduzine)-(xpocetak + horprojekcduzine + horprojekcsirine, ypocetak - vertprojekcduzine + vertprojekcsirine)
'Gornja desna linija
Line (xpocetak + horprojekcduzine, ypocetak - vertprojekcduzine - visina)-(xpocetak + horprojekcduzine + horprojekcsirine, ypocetak - vertprojekcduzine + vertprojekcsirine - visina)
End Sub
Private Sub Form_Click()
If povecavanjeugla = True Then
ugao = ugao + minugaopromene
Else
ugao = ugao - minugaopromene
End If
Call crtanjekockeilikvadra
End Sub
Private Sub Form_Load()
povecavanjeugla = True
End Sub
Private Sub Timer1_Timer()
If povecavanjeugla = True Then
ugao = ugao + minugaopromene
Else
ugao = ugao - minugaopromene
End If
Call crtanjekockeilikvadra
End Sub
[Ovu poruku je menjao rgdrajko dana 14.04.2007. u 16:36 GMT+1]