Perspektiven Korrektur (erledigt)
Übersicht
BlitzBasic
Allgemein|
|
Markus2Betreff: Perspektiven Korrektur (erledigt) |
Antworten mit Zitat |
|---|---|---|
|
Beispiel 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 |
Antworten mit Zitat |
|
|---|---|---|
|
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 |
Antworten mit Zitat |
|---|---|---|
|
@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 |
Antworten mit Zitat |
|
|---|---|---|
|
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 |
Antworten mit Zitat |
|---|---|---|
|
@hitokiri
Hi, ich A*sch hab nen Tipfehler gemacht wo ich meine Testroutine in mein Programm eingebaut habe Sorry, danke trotzdem für deine Hilfe |
||
Übersicht
BlitzBasic
Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group
