• Anmelden

Reborn

hat beim Stromkonzern schon Rabatt

  • »Reborn« ist der Autor dieses Themas

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

1

Montag, 1. November 2010, 12:41

Bitmap draw_line perfektion

Hi,
ich suche eine perfektion von Linien ziehen... Das heißt so viel wie ich will mit dem Maker mit Bitmaps eine Lienie ziehen (mit den Parametern (x, y, ox, oy, line_width)) und das mit möglichst viel Performance.

Ich hätte da sogar schon eine Idee: Man zerschneidet einen Strich von oben nach unten in kleine horizontale Schinken und rechnet von denen die Länge aus, sodass man in einer Schleife nur noch die höhe herunter klappern muss. Mein einzigstes Problem bei der Sache ist, mir fällt kein passender Algo ein um die Länge der jeweiligen Schnitte zu errechnen, aber vielleicht kann mir hier ja jemand helfen.

mfg Hindi
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

Neo-Bahamut

Himmelsgleicher

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

2

Montag, 1. November 2010, 14:31

Linien-Zeichnen-Algorithmen gibts doch schon, auch für den Maker.
Die Frage ist, soll deine Linie mit Kantenglättung gezeichnet werden?
Ich such mal irgendwas raus un edier es nacher :)

Edit Aus dem CGT den DDA-Algorithmus gemopst und verbessert :)

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  def draw_line2(x1, y1, x2, y2, color, stroke=1)
    return if stroke <= 0
    if x2 < x1
      x1, x2, y1, y2 = x2, x1, y2, y1
    end
    delta_x, delta_y = (x2-x1).abs, (y2-y1).abs
    length = (delta_x < delta_y ? delta_y : delta_x).to_f
    x_incr, y_incr = delta_x/length, delta_y/length
    x = x1 - (stroke/2.0)
    y = y1 - (stroke/2.0)
    x2add = x2 + (stroke/2.0)
    if x == x2add
      fill_rect(x, y1 < y2 ? y1 : y2, stroke, delta_y, color)
    end
    while x < x2add
      fill_rect(x, y, stroke, stroke, color)
      x += x_incr
      y += y_incr
    end
  end
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Neo-Bahamut« (1. November 2010, 22:49)


Reborn

hat beim Stromkonzern schon Rabatt

  • »Reborn« ist der Autor dieses Themas

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

3

Montag, 1. November 2010, 15:42

Erstmal danke... Hab es zwar noch nicht getestet, aber ich behaupte jetzt einfach mal, dass das nicht so ganz hinhaut... Z.B. wenn man eine 45° Linie ziehen will, währe die Dicke der Linie im vertikalen und im horizontalem Sinne nicht mehr gleich stroke, sondern um die hälfte mehr. Das würde doch eine Verfälschung der Liniendicke ergeben oder nicht?
Also die Liniendicke ist sehr von Wichtigkeit... Hast du vielleicht noch nen anderen?
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

Kenai

Landsknecht

Motto: “Niemals aufgeben, bevor man nicht alles versucht hat.”

  • Nachricht senden

4

Montag, 1. November 2010, 15:54

Wieso eine bessere^^? Teste sie doch erstmal =).

Aus dem CGT den DDA-Algorithmus
Das sagt doch eigentlich alles - der Algo ist bekannt und wird auch in anderen Programmen verwendet. Ich denke mal Neo hat nur den Quelltext vom CGT etwas verschönert (denn soweit ich mich erinnern kann, sah der damals nicht wirklich sauber aus - jetzt ist er es aber^^) - funktionierte aber schon früher so wie er sollte (auch die Liniensträke wurde ohne Fehler berücksichtigt).
  • :doc: Neuigkeiten

    Sämtliche Projekte sind erst mal pausiert. Weitere Informationen findet ihr hier. (Stand: 21.12.2012).
  • :rmxp: Cursal Engine (Jump and Run Engine)

    Mit Hilfe der Cursal Engine (RCE) ist es möglich auf ziemlich einfache Weise „Jump and Run“-Projekte im RPG Maker XP zu entwerfen. Das Anlegen basiert auf Installations- und Updatepaketen sowie reinen Archiven für fortgeschrittene Benutzer. Die Version 2 (CE2) befindet sich bereits in Entwicklung. Interessiert? Dann lade dir die neuste Version herunter ;3!
  • BildAvatar

    Diese kleinen, netten und knuffigen Vögelchen nennen sich Hamachou und dürften einigen aus Skies of Arcadia bekannt sein. Ich habe diese Bilder weder selbst gezeichnet noch modelliert. Dennoch finde ich sie so knuffig, dass man sie einfach lieb haben muss und ich hoffe euch geht's genau so^^". Diese Grafiken sind wirklich rar und ich bin stolz sie im Web gefunden zu haben.

Reborn

hat beim Stromkonzern schon Rabatt

  • »Reborn« ist der Autor dieses Themas

Motto: Wer noch was vom Wochenende weis, hat es nie erlebt!

  • Nachricht senden

5

Montag, 1. November 2010, 22:46

Habs jetzt mal ausprobiert und es funktioniert! Danke Neo!
Mehr als a Allgäuer ka a Mensch it wera.


Wie soll ich wissen was ich denke, bevor ich nicht höre was ich sage?


Spoiler: OpenSource-Projects
NES-Emulator - a simple NES-Emulator
ERDL - a embedded Ruby Interpreter with the abilltiy to render images with DirectX ERDL shall be 100% compatible to RPGXP-Ruby Scripts
zum Lesen den Text mit der Maus markieren

Neo-Bahamut

Himmelsgleicher

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

6

Montag, 1. November 2010, 22:50

Zitat

Neo hat nur den Quelltext vom CGT etwas verschönert (denn soweit ich mich erinnern kann, sah der damals nicht wirklich sauber aus - jetzt ist er es aber^^)

Nicht nur verschönert, auch deutlich verschnellert :)

Ich glaub, der Code oben hatte nen kleinen Fehler. Ich habs verändert, wenn du also merkst, das was nicht stimmt, nimm den neuen :)
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

Ähnliche Themen

Social Bookmarks