Perspektiven Korrektur (erledigt)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Markus2

Betreff: Perspektiven Korrektur (erledigt)

BeitragSa, Mai 07, 2005 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Beispiel Smile
Code: [AUSKLAPPEN]

Graphics 800,600,16,2

Global img=LoadImage("Test.bmp") ;128x128

;Im Uhrzeigersinn 4 Punkte
;Im Bild einfach mal Linien machen 1-2 2-3 3-4 4-1

x1=14
y1=18

x2=116
y2=37

x3=123
y3=76

x4=20
y4=113

x=0
y=0

Local a#,b#,c#,d#
Local col

Local txx#=128 ;Ziel breite
Local txy#=128 ;Ziel höhe

For x=0 To txx
For y=0 To txy

 a=intp(x1,x2,x/txx)*((txy-y)/txy) ;H Oben
 b=intp(x4,x3,x/txx)*((    y)/txy) ;H Unten

 c=intp(y1,y4,y/txy)*((txx-x)/txx) ;V Links
 d=intp(y2,y3,y/txy)*((    x)/txx) ;V Rechts

 col=ReadPixel(a+b,c+d,ImageBuffer(img))
 Color 0,0,col
 Plot x,y
Next
Next
WaitKey
End

Function Intp#(y1#,y2#,mu#)
 Return y1+(y2-y1)*mu
End Function
  • Zuletzt bearbeitet von Markus2 am Di, Mai 10, 2005 18:19, insgesamt 2-mal bearbeitet
 

hitokiri

BeitragSa, Mai 07, 2005 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn ich dich richtig verstehe willst du einfach den Fluchtpunkt beim SKalieren nicht in die Mitte setzen sondern eben frei wählen können und dann das bild richtig skalieren.
Ist allerdings nen problem wenn du selber x1 x2 y1 y2 angibst weil die fläche des fluchtpunkts muss ja trotzdem gleich der bildschirmauflösug sein wenn man sie mit der umgedrehten tiefe multipliziert wenn du verstehst was ich meine. deswegen würd ich das bild erstmal mit midhandle versehen.

dann würd ich für den fluchtpunkt lediglich x1 y1 und die tiefe angeben, dass er dir x2 und y2 richtig berechnet aber x2 und y2 bräuchtest du dann eigentlich gar nicht mehr.

du brauchst dann einfach nur x1-bildzeichenpunkt, y1-bildzeichenpunkt.

dann dividierst du (x1-bildzeichenpunkt) durch die tiefe und (y1-bildzeichenpunkt) durch die tiefe . an dem punkt malst du dein bild dass du dann eben eben skalierst hast.
das skalieren selbst ist auch simpel, kommt aber halt auf gewünschte maximale tiefe an. wobei maximale tiefe dann natürlich der fluchtpunkt selbst, also ein 1x1 square ist
scaleimage bild,1-tiefe/maximaletiefe

Markus2

BeitragSo, Mai 08, 2005 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
@hitokiri
Der Fluchtpunkt soll in der Mitte von den 4 Punkten sein
die ich angeben .
Den auszurechnen wäre kein Problem .
Irgendwie habe ich da noch nen Denkfehler drin .
 

hitokiri

BeitragSo, Mai 08, 2005 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm...das problem ist dass deine 4 punkte kein allgemeines rechteck mit 90° winkel sondern ein parallelogramm bilden oder sogar trapez, jetzt nich genau auf die zahlen geguckt.
aber damit wäre die x position des fluchtpunkt auch einfach (x1+x2+x3+x4)/4 und die y koordinate eben (y1+y2+y3+y4)/4

...was nich so wirklich verstehe:

willst du die grösse des bildes, also "tiefe" selber wählen ? oder irgendwie ausrechnen ?

wenn du eben allerdings keine fläche hast die den winkeln der kanten der textur entspricht kriegst du es so niemals richtig hin.
dazu brauchst dann matrizenrechnung...

Markus2

BeitragDi, Mai 10, 2005 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
@hitokiri

Hi,
ich A*sch hab nen Tipfehler gemacht wo ich meine Testroutine
in mein Programm eingebaut habe Embarassed
Sorry, danke trotzdem für deine Hilfe Wink

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group