Verbesserungs Vorschläge für folgende Funktion:

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

LukasBanana

Betreff: Verbesserungs Vorschläge für folgende Funktion:

BeitragSo, Apr 15, 2007 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,

ich hab mal ne Funktion geschrieben mit der man eine fette Linie zeichnen kann:

Code: [AUSKLAPPEN]

Function DrawFatLine(x1, y1, x2, y2, size)
   If y2 < y1
      deg_x# = x1-x2 : deg_y# = y1-y2
   Else
      deg_x# = x2-x1 : deg_y# = y2-y1
   EndIf
   deg_hyp# = Sqr(deg_x^2+deg_y^2)
   degree# = ASin(deg_x/deg_hyp)-90
   ; ---
   For index = 1 To size
      posx# = Sin(degree)*(index-size/2)
      posy# = Cos(degree)*(index-size/2)
      ; ---
      Line(x1+posx, y1+posy, x2+posx, y2+posy)
   Next
End Function

Aber: ... , wie ich mir auch schon dachte, sieht es noch etwas komisch aus weil zwischen den vielen Linien noch Zwischenräume sind, jetzt weiß ich aber nicht wie ich da noch vernünftig Linien dazwischen bekomme.

Kennt sich jemand mit Sinus/ Cosinus gut aus, dass er mir da vielleicht helfen könnte?

Gruß LukasBanana
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Apr 15, 2007 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Falls du Blitz3D haben solltest, so probiere mal das hier https://www.blitzforum.de/foru...hp?t=21659

Ist sicherlich um Faktor 1000 schneller, als unzählige und langsme 2D-Befehle zu zeichnen.

Wenn dir der diffuse Verlauf von Line3D nicht gefällt, so kannst du diesen durch neues UV-Maping wet machen (sind nur 6 Zahlen ändern).

Willst du es denoch mit 2D-Machen, so würde ich den Bereich berechnen und es dann nur noch mit vertikalen oder horizontalen Rect's und 1 Pixel Breite machen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

LukasBanana

BeitragSo, Apr 15, 2007 18:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß leider nicht woher ich das "Draw3D.bb" nehmen soll Embarassed
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Apr 15, 2007 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Ihr braucht zur Funktion des ganzen, einmal die Include Draw3D.bb
https://www.blitzforum.de/upload/file.php?id=1189 und das Image
https://www.blitzforum.de/upload/file.php?id=1187 hier, fertig...
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

LukasBanana

BeitragMo, Apr 16, 2007 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, jetzt kann ich es starten aber ich seh kein Text, ich seh im Code nirgends was davon wo das Bild geladen wird?! Sad
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Apr 16, 2007 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Textfont wir mit folgender Zeile (in der Draw3D.bb) geladen:
Code: [AUSKLAPPEN]
Global text_brush=LoadBrush("font.png",3,256,256)

In dieser Konstellation sollte sich das Bild natürlich im selben Verzeichnis befinden wie die Draw3D.bb

Der Brush für Plot3D, Line3D, Rect3D und Oval3D, wird nicht geladen, sondern im Code direkt erstellt. Willst du zB nur Line3D ohne 'Verlauf' haben, so ändere folgende Zeilen in der Line3D-Function zu:
Code: [AUSKLAPPEN]
  draw_v0=AddVertex(draw_face,f_draw_x1+TFormedY()*draw_br,f_draw_y1-TFormedX()*draw_br,0, 1.5,0.5)
  draw_v1=AddVertex(draw_face,f_draw_x1-TFormedY()*draw_br,f_draw_y1+TFormedX()*draw_br,0, 1.5,0.5)
  draw_v2=AddVertex(draw_face,f_draw_x2-TFormedY()*draw_br,f_draw_y2+TFormedX()*draw_br,0, 1.5,0.5)
  draw_v3=AddVertex(draw_face,f_draw_x2+TFormedY()*draw_br,f_draw_y2-TFormedX()*draw_br,0, 1.5,0.5)

Die Draw3D.bb sollte im eigenem Projekt per ql:Include eingebunden werden. Dabei sollte (falls keine Änderungen vorgenommen werden) sich sowohl die Draw3D.bb als auch font.png im selben Verzeichnis befinden, wo sich dein Code befindet. Die Draw3D.bb selber kann nicht ausgeführt werden, da sich lediglich nur Funktionen und Variablendeklarationen in ihr befinden.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Triton

BeitragMo, Apr 16, 2007 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit 2D-Befehlen würde ich den dicken Strich (der ja eigentlich ein rechteck ist, welches man wiederrum in 2 Dreiecke teilen kann) mit ner Dreiecksfüllroutine zeichnen.

Arrow https://www.blitzforum.de/viewtopic.php?t=6316
Coding: silizium-net.de | Portfolio: Triton.ch.vu

LukasBanana

BeitragDi, Apr 17, 2007 11:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, an euch beide Very Happy

Gefällt mir beides ganz gut und funktioniert auch.

Gruß LukasBanana
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana
Meine Projekte auf github.com: https://github.com/LukasBanana
Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group