Español
Experimente

Darstellung rotierender 3D-Drahtobjekte sin OGL

 

p.specht


'  Erste Gehversuche con einfachen 3D-Drahtobjekten [P. Pájaro carpintero 1997] - adaptado en
'  selbstständige Rotation con Bildschirmpuffer [J. Strobl 2013]
Declarar a!, b!, c!, x!,y!,z!, xx!,yy!,zz!, ca!,cb!,cc!,sa!,sb!,sc!
Declarar a11!,a21!,a31!,a12!,a22!,a32!,a13!,a23!,a33!
Declarar xr!,yr!,zr!,gr!,dist!, ur!,p&,xv!,yv!,i&,j&
Declarar x0!,y0!,z0!,x1!,y1!,z1!, u0!,v0!,u1!,v1!
Declarar s0&,s1&,p0!,p1!
Declarar e&,Eckpunkte#, v&, Verbindungen#
Declarar hScrBuffer&
Declarar elapsedTime&, lastMesuredTime&
Declarar msecAccumulator&
Ventana de Estilo 2 | 8 | 16
Ventana 0,0 - 512, 384
' Initialisieren
@Conjunto("TrueColor", 1)
Selección aleatoria
ur!=Pi()/180
'  Maßstab Realobjekt a Modell
gr! = 30
'  Stegfarbe
' Stopvariable, por ESC-Taste gesetzt
hScrBuffer& = @Crear("hNewPic", Width(%hwnd), Height(%hwnd), 0)
i&=0
lastMesuredTime& = &gettickcount
Mensajes del usuario 16

Sinestar encargado i&

    'Cls @Rgb(240,240,255)
    'Localizar 0,0:Imprimir "Mausklick! Ende con ESC-Taste"
    '  Entfernung (Mittlerer Betrachtungs-Vorversatz)
    'dist! = Rnd(300) + 300
    dist! = 600
    ' Zufälliger Versatz en x y y Richtung (macht Ergebnis interessanter)
    'xv! = @Rnd(150) - 100
    'yv! = @Rnd(200) - 100
    '  Zufällige Euler-Drehwinkel para el Szene erzeugen
    'a! = (Rnd(180) - 90) * ur!
    'b! = (Rnd(40) - 20) * ur!
    'c! = (Rnd(80) - 20) * ur!
    elapsedTime& = &gettickcount - lastMesuredTime&
    lastMesuredTime& = &gettickcount
    msecAccumulator& = msecAccumulator& + elapsedTime&

    If msecAccumulator& > 500

        SetText %hwnd, "Framerate: " + @Str$((1 / elapsedTime& * 1000) \ 1) + " FPS"
        msecAccumulator& = msecAccumulator& - 500

    EndIf

    a! = a! + ur! * (elapsedTime& / 25)
    b! = b! + ur! * (elapsedTime& / 25)
    c! = c! + ur! * (elapsedTime& / 25)
    '  Streckeneinheit gemäß obigen Drehwinkeln en el drei
    '  Ebenen (Grundriss, Aufriss, Seitenriss) projizieren
    '      Vorbereitung Variablenaufruf en lugar de laufende Winkel-Neuberechnung
    ca! = Cos(a!) : cb! = Cos(b!) : cc! = Cos(c!)
    sa! = Sin(a!)  : sb! = Sin(b!) : sc! = Sin(c!)
    '      Rotationsfaktoren el Bewegungsmatrix berechnen
    a11! = ca! * cb!
    a21! = cc! * sb! + sc! * sa! * cb!
    a31! = sc! * sb! - cc! * sa! * cb!
    a12! = -1 * ca! * sb!
    a22! = cc! * cb! - sc! * sa! * sb!
    a32! = sc! * cb! + cc! * sa! * sb!
    a13! = sa!
    a23! = -1 * sc! * ca!
    a33! = cc! * ca!
    '    Translation des Modells, si gewünscht
    xx! = 0
    yy! = 0
    zz! = 0
    '   3D-Modell uno Papierflugzeugs (möglichst en el Schwerpunkt!)
    e& = 14' Zahl el Eckpunkte
    Dim Eckpunkte#, e& * 3 * 8
    Float Eckpunkte#,0 = 0,-2,18, 0,-2,-3, -1,0,-3, -1,0,14, 1,0,14, 1,0,-3, -4,0,-3, -4,0,1, -5,1,-2, -5,1,-3, 4,0,1, 4,0,-3, 5,1,-3,  5,1,-2
    v& = 19' Zahl el Verbindungsstege
    Dim  Verbindungen#, v& * 2 * 2
    Word Verbindungen#,0 = 0,1, 1,2, 2,3, 3,0, 0,4, 4,5, 5,1, 3,7, 7,6, 6,2, 7,8, 8,9, 9,6, 4,10, 10,11, 11,5, 10,13, 13,12, 12,11
    StartPaint hScrBuffer&
    USEP 0,2, @Rgb(255, 0, 0)
    Cls @Rgb(240,240,255)
    DrawText 0, 0, "Beenden con ESC"
    j& = 0

    Mientras que j& < v&

        s0& = @Word( Verbindungen#, j& * 4)
        x! = gr! * @Float( Eckpunkte#, 24 * s0&)
        y! = gr! * @Float( Eckpunkte#, 24 * s0& + 8)
        z! = gr! * @Float( Eckpunkte#, 24 * s0& + 16)
        xr! = xx! + a11! * x! + a12! * y! + a13! * z!
        yr! = yy! + a21! * x! + a22! * y! + a23! * z!
        zr! = zz! + a31! * x! + a32! * y! + a32! * z!
        x0! = xr! + xv! : y0! = yr! + yv!  : z0! = zr! + dist!
        s1& = @Word( Verbindungen#, j& * 4 + 2 )
        x! = gr! * @Float( Eckpunkte#, 24 * s1&)
        y! = gr! * @Float( Eckpunkte#, 24 * s1& + 8)
        z! = gr! * @Float( Eckpunkte#, 24 * s1& + 16)
        xr! = xx! + a11! * x! + a12! * y! + a13! * z!
        yr! = yy! + a21! * x! + a22! * y! + a23! * z!
        zr! = zz! + a31! * x! + a32! * y! + a32! * z!
        x1! = xr! + xv! : y1! = yr! + yv! : z1! = zr! + dist!
        '  In 3D-Endstellung gebrachte Stegpunkte en Ausgabebereich projizieren
        u0! = x0! * 192 / z0! + 250
        v0! = 192 - y0! * 192 / z0!
        u1! = x1! * 192 / z1! + 250
        v1! = 192 - y1! * 192 / z1!
        ' Drahtsteg dibujar
        Line u0!,v0! - u1!,v1!
        ' Nächster Steg!
        Inc j&

    EndWhile

    EndPaint
    DrawPic hScrBuffer&, 0, 0; 0
    'WaitInput
    Case @Iskey(27) : i&=1
    Case %umessage = 16 : i&=1

EndWhile

' Fertig
Disponer Eckpunkte#
Disponer Verbindungen#
End
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
09.05.2021  
 




RudiB.
Das erinnert mich a media ATARI 1024 ST.
Como lief auch así una Drahtgitter-Modell (una Kirche) encima GFA-Basic.
Yo war damals simplemente sólo faziniert.....
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
09.05.2021  
 



Zum Experiment


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

774 Views

Untitledvor 0 min.
p.specht16.06.2022
Sven Bader01.02.2022
Ernst21.07.2021
Uwe ''Pascal'' Niemeier13.06.2021
Más...

Themeninformationen

Dieses Thema ha 2 subscriber:

RudiB. (1x)
p.specht (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie