LineWay 10, 10, 110, 110 , Prozentwert# von ???
Hi.
Hier ist ein kleiner Quellcode, der einige Interessieren dürfte:
[code:1:b9fa166bb5]Function LineWay(X1#, Y1#, X2#, Y2#, Percent#)
While (Percent# > 100)
Percent# = Percent# - 100
Wend
Percent# = Percent# / 100
WA# = X1+((X2-X1)*Percent#)
WB# = Y1+((Y2-Y1)*Percent#)
Plot WA#, WB#
End Function[/code:1:b9fa166bb5]

Mit dieser Funktion wird ein Punkt in einer Linie gezeichnet. Percent# bestimmt wo. 100 (also 100%) ist das Ende der Linie, daher ist 0% also der Anfang der Linie.

Und hier mal ein kleines Beispiel dazu:
[code:1:b9fa166bb5]Percent# = 0

AppTitle "Speedy Line Move Demo"

SetBuffer BackBuffer()
While Not KeyHit(28)
Cls
Percent# = Percent# + 1
LineWay 10, 10, 110, 110 , Percent#
Text 0, 0, "Nun wird der Einzelne Punkt bewegt. Drücke Enter für weiter ..."
Flip
Delay 40
Wend

Cls

While Not KeyHit(28)
; Cls
Percent# = Percent# + 1
LineWay 150, 10, 110, 110 , Percent#
Text 0, 0, "Nun wird Eine Linie gezeichnet. Drücke Enter für weiter ..."
Flip
Delay 40
Wend

Cls

While Not KeyHit(1)
Percent# = Percent# + 1
If Percent# > 100 Then
a = Rnd(300)
b = Rnd(300)
c = Rnd(300)
d = Rnd(300)
Color Rand(125,255), Rand(125,255), Rand(125,255)
Percent# = 0
End If
For hh = 0 To 100
dj# = hh / 1000
LineWay a, b, c, d , Percent# + dj#
Next
Text 0, 0, "Nun werden Bunte Linien gezeichnet."
Text 0, 15, "Und zwar Gleich-Schnell! Drücke ESC für Exit."
Flip
Wend

End[/code:1:b9fa166bb5]

MfG ShadowTurtle

PS. Das ganze könnte man jetzt noch durch WritePixelFast ect. Modifizieren, aber ich habe jetzt wirklich keine Zeit mehr... sorry..., aber mehr wie 5 Min. Zeit, dass zu Proggen hatte ich nicht, Niclas.
===
von ???
Weiß zwar gerade nicht wo man das einsetzen könnte, sieht aber dennoch interessant aus =)
===
von ???
Hi.
z.B. für ein Mal Programm, wenn man eine Maske erstellen möchte!

Aber hierfür muss man sich eine Routine zeichnen... mom... hier:
[code:1:a6da08bcae]Function LineStep(X1#, Y1#, X2#, Y2#, PlotInLine#)
II# = 0
While II# < 100
II# = II# + 100 / PlotInLine#
LineWay X1#, Y1#, X2#, Y2#, II#
Wend
End Function[/code:1:a6da08bcae]
Kurze erklärung: Gebe ich jetzt das hier an ... :
[code:1:a6da08bcae]LineStep 10, 10, 250, 20, 30[/code:1:a6da08bcae]
... So wird eine Linie mit nur 30 Punkten gezeichnet.

Aber wie schon gesagt: Spätestens ab einer zusatz-routine wie LineStep würde die verwendung von WritePixelFast sicherlich besser sein!

@Edit: Es war ein kleiner Bug in LineStep enthalten, dieser habe ich eben entfernt.

MfG ShadowTurtle
===
von ???
hmm
die function scheint nicht richtig zu funktionieren :|

ich hab sie so umgecodet das sie die koordinaten wiedergibt die eigentlich gezeichnet werden sollten:
[code:1:d7ea047d5a]
Global WA#
Global WB#

Function LineStep(X1#, Y1#, X2#, Y2#, PlotInLine#)
II# = 0
While II# < 100
II# = II# + 100 / PlotInLine#
LineWay X1#, Y1#, X2#, Y2#, II#
Wend
End Function

;zusatzfunction
Function LineWay(X1#, Y1#, X2#, Y2#, Percent#)
While (Percent# > 100)
Percent# = Percent# - 100
Wend
Percent# = Percent# / 100
WA# = X1+((X2-X1)*Percent#)
WB# = Y1+((Y2-Y1)*Percent#)
End Function


LineStep(0,0,100,100,50)
Print WA#
Print WB#
[/code:1:d7ea047d5a]

nur wenn ich da jetzt linesteo(0,0,100,100,50) mache dann sollte er mir die koordinaten 50,50 geben weil das ja 50 punkte von 0,0 zu 100,100 waären aber er sagt 100,100.
Und wenn ich 101 plotinline# mache dann gibt der mit irgendwie 0,99nochwas irgendwie geht die nicht :|
===
von ???
Hi. @Edit: Ich habe die aussage verbessert:
Wenn Du LineStep ausführst, ist es klar dass bei beidem der Endwert raus kommt.
Denn mit LineStep wird ja eine Linie gezeichnet, in dem Du angeben kannts, wieviele Pixel die Linie haben soll.

Soll heißen: Mit LineStep hast Du eigentlich schon deine Linie, die Du wolltest.

Aber jetzt mal zum jetztigen Probem (*g*): Da LineWay (das ja bei LineStep benutzt wirst, dass Du ja ausführst) immer abgefragt wird, ist es klar, dass WA# und WB# das Endergebnis zurück bekommen.

Daher ersetzte das hier ... :
[code:1:df010e530e]LineStep(0,0,100,100,50)
Print WA#
Print WB#[/code:1:df010e530e]
Durch das hier:
[code:1:df010e530e]LineWay 0, 0, 100, 100, 50 ; Also 50% von der Linie (mit Position) ausrechnen
Print WA# ; Zeige Y Punkt von der zuletzt berechneten stelle an. Also 50.
Print WB# ; Zeige X Punkt von der zuletzt berechneten stelle an. Also auch 50.
[/code:1:df010e530e]

MfG ShadowTurtle
===
von ???
EDIT2:

oh mann...
wenn ich jetzt aber mache:
[code:1:ce79a1dcf5]
LineWay 0, 0, 200, 200, 50
Print WA#
Print WB#
[/code:1:ce79a1dcf5]

mache,
dann steht da 100,100
ich will aber das er von 50 [b:ce79a1dcf5]punkten[/b:ce79a1dcf5] in richtung 200,200 die koordinaten sagt, was wäre 50,50...
ich will punkte in die richtung von x2,y2 nicht prozent...
===
von ???
@Niclas:
Öhm... benutze doch LineStep um eine Linie mit Punkte zu zeichnen. Das dürfte jetzt wirklich nicht all zu schwer sein, oder???

@Edit: Ich verstehe jetzt wie Du das meints. Du willts jetzt z.B. 10 Objekte in einer Linie (mit Positions angabe) erstellen, richtig? Dann ist hier ein kleines Tutorial:

Erstelle zunächst denn Header für die "Objekt-in-einer-Linie-erstellen" Funktion:
[code:1:1fd5a3c69d]Function ObjectCreateStep(X1#, Y1#, X2#, Y2#, PlotInLine#)
II# = 0
While II# < 100
II# = II# + 100 / PlotInLine#
LineWay X1#, Y1#, X2#, Y2#, II#[/code:1:1fd5a3c69d]
Nun kannts Du hier jedes mal ein Objekt erstellen lassen, anstatt ein Pixel:
[code:1:1fd5a3c69d]MyObject.Object = New Object
MyObjectX = WA#
MyObjectY = WB#[/code:1:1fd5a3c69d]
Und nun kommt der Schluss:
[code:1:1fd5a3c69d] Wend
End Function[/code:1:1fd5a3c69d]

MfG ShadowTurtle
===
von ???
ich will einfach nur einen code,
der mir die koordinaten in einem bestimmten punkte abstand zwischen x1,y1 und x2,y2 sagt...

das wäre bei 30,30 und 456,456 (da alle angaben positiv und gleich sind geht die linie genau nach rechts unten, aber sie kann auch nur ein bisschen nach links und nach oben oder so) und punkte 40 dann soll er mir zurückgeben 70,70...
===
von ???
Die Koordinaten könntest Du jetzt mit:
[code:1:4f5d878f78]For MyObject.Object = Each Object
print Objectx + " :: " + Objecty
Next[/code:1:4f5d878f78]
Auslesen, und zwar von jedem einzelnen Punkt, dass erstellt worden ist.

@Edit:
Hi. Ich weiß nicht was Du hast. Wir sind alle möglichkeiten durchgegangen.
Die möglichkeit, die Du meints ist diese hier:
[code:1:4f5d878f78]
LineWay(0,0,100,100,50)
Print WA#
Print WB#
[/code:1:4f5d878f78]

Ich glaube, Du hast das mit LineStep und LineWay verwechselt.
Probiere das ganze bitte nochmal mit LineWay statt LineStep.

MfG ShadowTurtle
===
von ???
nein ehrlich nicht...
noch ein letztesmal:

ich habe jetzt eine liste erstellt, die alles auflistet was die schleife durchgegangen ist...

[code:1:d715837cea]
WB# = Y1+((Y2-Y1)*Percent#)
End Function

Function ObjectCreateStep(X1#, Y1#, X2#, Y2#, PlotInLine#)
II# = 0
While II# < 100
II# = II# + 100 / PlotInLine#
LineWay X1#, Y1#, X2#, Y2#, II#
MyObject.obj = New Obj
MyObjectX = WA#
MyObjectY = WB#
Wend
End Function

ObjectCreateStep(0,0,200,200,50)

For MyObject.Obj = Each Obj
Print myobjectx + " :: " + myObjecty
Next

WaitKey()
[/code:1:d715837cea]

jetzt meine frage:
warum geht das alles nur in 2er schritten?
wenn das jetzt in 1ner schritten gehen würde dann hast du mein problem gelöst!
===
von ???
Hi.
Das meine ist ja. LineStep berechnet ein paar Punkte in einer Linie. LineWay hingegen nur einmal.

Nach dem man einmal LineWay ausgeführt hat, sind in WA# und WB# die X & Y Positionen gespeichert. Und zwar [b:acc59cb81e]nur[/b:acc59cb81e] von diesem einen Punkt.

MfG ShadowTurtle
===
von ???
post oben editiert...

edit:
dann berechnet deine function (auch linestep) nur anhand dr prozente?
nicht anhan der pixel die er auf dem weg zum ziel zurück gelegt hat?
===
von ???
hehe die funktion etwas modifiziert hätte ich vor 2 wochen auch gebraucht.
mfg olli
===
von ???
@Niclas:
Die Funktion ist für dich wirklich gebrauchbar, aber ich erzähle dir hier das gern nochmal Neu wie man die LineWay & LineStep funktion Benutzten tut bzw. auch kann ( :) ) :

Führe ich jetzt diesen Beispielcode aus, ... :
[code:1:9c77c34d6e]LineWay 0, 0, 180, 180, 50
Print WA#
Print WB#[/code:1:9c77c34d6e]
... dann erscheint dieses ergebnis:
[code:1:9c77c34d6e]90
90[/code:1:9c77c34d6e]

Denn 50% (siehe letzte Parameter im Beispiel Code, bei der benutzung von LineWay) von 180 Pixeln ergeben 90 Pixeln.

MfG ShadowTurtle

PS. Aber man sieht, die Funktion wäre brauchbar gewesen *gg*
===
ja... von ???
durchaus interessant



Suche:
(unterstützt mySQL Wildcards ala %)
Titel:
Text:
Autor: