[B2D/B3D] 3D-Funktionsgrapher (neu: stereografisch)
Übersicht

FroggyBetreff: [B2D/B3D] 3D-Funktionsgrapher (neu: stereografisch) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
ich habe einen Pseudo-3D-Funktionsgrapher geschrieben. Erwartet nichts besonders schönes oder geniales, mir war halt langweilig ![]() NEU: Perspektivischer Grapher in B3D! Danke an hectic und meinen Kollegen ![]() Ausserdem: Stereografischer Funktionsgrapher (-> Siehe unterste Codebeispiele hier im Titelpost) Die neusten Versionen der Codes (mit Screenshot-Beispielen): Plotter: Punkte: ![]() ![]() Code: [AUSKLAPPEN] Graphics 600,600,32,2 SetBuffer BackBuffer() Global x#,y#,l Repeat Repeat Cls If KeyHit(200) Or KeyHit(208) Then l=(l+1) Mod 2 Text 0,0," Graph aus Punkten darstellen (enthält viele Lücken)" Text 0,12," Graph aus Linien darstellen (am Besten nur für entweder z>=0 oder z<=0)" Text 0,l*12,">" Flip Until KeyHit(28) Cls AppTitle "3D-Funktionsgrapher - Bild wird gerendert..." For y#=-200 To 200 Color 128+y/2,128+y/2,128+y/2 For x#=-200 To 200 drawfunc( Sin(Sqr(x^2+y^2)*10)*100 ) ; Hier Graphenfunktion eingeben (diese Zeile für mehr Funktionen kopieren) Next Flip Next AppTitle "3D-Funktionsgrapher" FlushKeys Repeat If KeyHit(1) Then End Until KeyHit(28) Forever Function drawfunc(z) If l=0 Then Plot 300+x+y*0.5,300+y*0.5-z If l=1 And z>-9999999 And z<9999999 Then Line 300+x+y*0.5,300+y*0.5,300+x+y*0.5,300+y*0.5-z End Function Frei drehbares Gitter: ![]() Code: [AUSKLAPPEN] Graphics 600,600,32,2 SetBuffer BackBuffer() Global rx#,ry#,w#,wz# Dim z(2) Repeat If KeyDown(205) Then w#=(w#+1) Mod 360 If KeyDown(203) Then w#=(w#-1+360) Mod 360 If KeyDown(200) Then wz#=(wz#+1) Mod 360 If KeyDown(208) Then wz#=(wz#-1+360) Mod 360 Cls AppTitle "3D-Funktionsgrapher" For ry#=-200 To 200 Step 10 For rx#=-200 To 200 Step 10 For i = 0 To 2 x#=rx+(i=1)*10:y#=ry+(i=2)*10 z(i)= Sin(Sqr(x^2+y^2)*2)*100 ; Hier Funktion eingeben (diesen Zeilenblock für mehr Funktionen kopieren) Next:drawfunc() Next Next Text 0,0,"Winkel x,y: "+w+"°" Text 0,12,"Winkel z: "+wz+"°" Flip Forever Function drawfunc() If z(0)>-9999999 And z(0)<9999999 And z(1)>-9999999 And z(1)<9999999 Then Line 300+rx*Cos(w)+ry*Sin(w),300+ry*Cos(w)*Sin(wz)-rx*Sin(w)*Sin(wz)-z(0)*Cos(wz),300+(rx+10)*Cos(w)+ry*Sin(w),300+ry*Cos(w)*Sin(wz)-(rx+10)*Sin(w)*Sin(wz)-z(1)*Cos(wz) EndIf If z(0)>-9999999 And z(0)<9999999 And z(2)>-9999999 And z(2)<9999999 Then Line 300+rx*Cos(w)+ry*Sin(w),300+ry*Cos(w)*Sin(wz)-rx*Sin(w)*Sin(wz)-z(0)*Cos(wz),300+rx*Cos(w)+(ry+10)*Sin(w),300+(ry+10)*Cos(w)*Sin(wz)-rx*Sin(w)*Sin(wz)-z(2)*Cos(wz) EndIf End Function Ausgefüllte Form: ![]() Code: [AUSKLAPPEN] Graphics 600,600,32,2 SetBuffer BackBuffer() Global rx#,ry# Dim z(3) Repeat Cls AppTitle "3D-Funktionsgrapher - Bild wird gerendert..." For ry#=-200 To 200 Step 2 Color 128+ry/2,128+ry/2,128+ry/2 For rx#=-200 To 200 Step 2 For i = 0 To 3 x#=rx+(i=1)*2+(i=3)*2:y#=ry+(i=2)*2+(i=3)*2 z(i)= -Sin(Sqr(x^2+y^2))*100 ; Hier Funktion eingeben (diesen Zeilenblock für mehr Funktionen kopieren) Next:drawfunc() Next Flip Next AppTitle "3D-Funktionsgrapher" FlushKeys Repeat If KeyHit(1) Then End Until KeyHit(28) Forever ;Drawfunc Function drawfunc() If z(0)>-9999999 And z(0)<9999999 And z(1)>-9999999 And z(1)<9999999 And z(2)>-9999999 And z(2)<9999999 Then triangle(300+rx+ry*0.5,300+ry*0.5-z(0),300+(rx+2)+ry*0.5,300+ry*0.5-z(1),300+rx+(ry+2)*0.5,300+(ry+2)*0.5-z(2),1) EndIf If z(3)>-9999999 And z(3)<9999999 And z(1)>-9999999 And z(1)<9999999 And z(2)>-9999999 And z(2)<9999999 Then triangle(300+(rx+2)+(ry+2)*0.5,300+(ry+2)*0.5-z(3),300+(rx+2)+ry*0.5,300+ry*0.5-z(1),300+rx+(ry+2)*0.5,300+(ry+2)*0.5-z(2),1) EndIf End Function ;Dreieck Function triangle(x1#,y1#,x2#,y2#,x3#,y3#,a) ;triangle(x1,y1,x2,y2,x3,y3,gefüllt?) Line x1,y1,x2,y2 Line x2,y2,x3,y3 Line x3,y3,x1,y1 If a = 1 Then If x2<=x1 Then p=x2:x2=x1:x1=p : p=y2:y2=y1:y1=p If x3<=x1 Then p=x3:x3=x1:x1=p : p=y3:y3=y1:y1=p If x2<=x3 Then p=x2:x2=x3:x3=p : p=y2:y2=y3:y3=p For I = x1 To x3 If x1<>x2 Or x2<>x3 Or x1<>x3 Then If x1=x3 Then Line I,y1+(y2-y1)/(x2-x1)*(I-x1),I,y1 Else Line I,y1+(y2-y1)/(x2-x1)*(I-x1),I,y1+(y3-y1)/(x3-x1)*(I-x1) EndIf EndIf Next For I = x3 To x2 If x1<>x2 Or x2<>x3 Or x1<>x3 Then If x2=x3 Then Line I,y1+(y2-y1)/(x2-x1)*(I-x1),I,y2 Else Line I,y1+(y2-y1)/(x2-x1)*(I-x1),I,y2+(y2-y3)/(x2-x3)*(I-x2) EndIf EndIf Next EndIf End Function ;/Dreieck Mit Textur: ![]() Code: [AUSKLAPPEN] Graphics 600,600,32,2 SetBuffer BackBuffer() Global rx#,ry# Dim z(3) bild = LoadImage(Input("Bildpfad: ")) Repeat Cls AppTitle "3D-Funktionsgrapher - Bild wird gerendert..." For ry#=-200 To 198 Step 2 For rx#=-200 To 198 Step 2 rgb=ReadPixel((rx/400+0.5)*ImageWidth(bild),(ry/400+0.5)*ImageHeight(bild),ImageBuffer(bild)) r=(rgb Shr 16) And $FF g=(rgb Shr 8) And $FF b=rgb And $FF Color r,g,b For i = 0 To 3 x#=rx+(i=1)*2+(i=3)*2:y#=ry+(i=2)*2+(i=3)*2 z(i)= Sqr((200-100)^2/4-(Sqr(x^2+y^2)-(200+100)/2)^2) ; Hier Funktion eingeben (diesen Zeilenblock für mehr Funktionen kopieren) Next:drawfunc() For i = 0 To 3 x#=rx+(i=1)*2+(i=3)*2:y#=ry+(i=2)*2+(i=3)*2 z(i)= -Sqr((200-100)^2/4-(Sqr(x^2+y^2)-(200+100)/2)^2) ; Hier Funktion eingeben (diesen Zeilenblock für mehr Funktionen kopieren) Next:drawfunc() Next Flip Next AppTitle "3D-Funktionsgrapher" FlushKeys Repeat If KeyHit(1) Then End Until KeyHit(28) Forever ;Drawfunc Function drawfunc() If z(0)>-9999999 And z(0)<9999999 And z(1)>-9999999 And z(1)<9999999 And z(2)>-9999999 And z(2)<9999999 Then triangle(300+rx+ry*0.5,300+ry*0.5-z(0),300+(rx+2)+ry*0.5,300+ry*0.5-z(1),300+rx+(ry+2)*0.5,300+(ry+2)*0.5-z(2),1) EndIf If z(3)>-9999999 And z(3)<9999999 And z(1)>-9999999 And z(1)<9999999 And z(2)>-9999999 And z(2)<9999999 Then triangle(300+(rx+2)+(ry+2)*0.5,300+(ry+2)*0.5-z(3),300+(rx+2)+ry*0.5,300+ry*0.5-z(1),300+rx+(ry+2)*0.5,300+(ry+2)*0.5-z(2),1) EndIf End Function ;Dreieck Function triangle(x1#,y1#,x2#,y2#,x3#,y3#,a) ;triangle(x1,y1,x2,y2,x3,y3,gefüllt?) Line x1,y1,x2,y2 Line x2,y2,x3,y3 Line x3,y3,x1,y1 If a = 1 Then If x2<=x1 Then p=x2:x2=x1:x1=p : p=y2:y2=y1:y1=p If x3<=x1 Then p=x3:x3=x1:x1=p : p=y3:y3=y1:y1=p If x2<=x3 Then p=x2:x2=x3:x3=p : p=y2:y2=y3:y3=p For I = x1 To x3 If x1<>x2 Or x2<>x3 Or x1<>x3 Then If x1=x3 Then Line I,y1+(y2-y1)/(x2-x1)*(I-x1),I,y1 Else Line I,y1+(y2-y1)/(x2-x1)*(I-x1),I,y1+(y3-y1)/(x3-x1)*(I-x1) EndIf EndIf Next For I = x3 To x2 If x1<>x2 Or x2<>x3 Or x1<>x3 Then If x2=x3 Then Line I,y1+(y2-y1)/(x2-x1)*(I-x1),I,y2 Else Line I,y1+(y2-y1)/(x2-x1)*(I-x1),I,y2+(y2-y3)/(x2-x3)*(I-x2) EndIf EndIf Next EndIf End Function ;/Dreieck Perspektivisch [B3D]: ![]() ![]() Code: [AUSKLAPPEN] Graphics3D 800,600,32,2 BackBuffer() AppTitle "3D-Funktionsgrapher (Perspektive)" Print "Pfeiltasten: Objekt drehen" Print "A: Nach vorne fahren" Print "Y: Nach hinten fahren" Print "W: Wireframe an/aus" WaitKey Dim v(200,200,3) Dim z#(3) Global rx#,ry# cam=CreateCamera() PositionEntity cam,0,0,-300 mesh=CreateMesh() EntityFX mesh,3 surface=CreateSurface(mesh) For ry=-100 To 100 Step 2 For rx = -100 To 100 Step 2 For i = 0 To 3 x=rx+(i=1)*2+(i=3)*2:y=ry+(i=2)*2+(i=3)*2 z(i)=Sin(Sqr(x^2+y^2)*2.5)*100 ; Hier Graphenfunktion eingeben Next If z(0)<999999 And z(0)>-999999 And z(1)<999999 And z(1)>-999999 And z(2)<999999 And z(2)>-999999 And z(3)<999999 And z(3)>-999999 Then v(ry+100,rx+100,0)=AddVertex(surface,rx,z(0),ry) v(ry+100,rx+100,1)=AddVertex(surface,rx+2,z(1),ry) v(ry+100,rx+100,2)=AddVertex(surface,rx,z(2),ry+2) v(ry+100,rx+100,3)=AddVertex(surface,rx+2,z(3),ry+2) For i = 0 To 3 VertexColor surface,v(ry+100,rx+100,i),128+z(i),128+z(i),128+z(i),1 Next AddTriangle(surface,v(ry+100,rx+100,0),v(ry+100,rx+100,1),v(ry+100,rx+100,2)) AddTriangle(surface,v(ry+100,rx+100,2),v(ry+100,rx+100,1),v(ry+100,rx+100,0)) AddTriangle(surface,v(ry+100,rx+100,1),v(ry+100,rx+100,3),v(ry+100,rx+100,2)) AddTriangle(surface,v(ry+100,rx+100,2),v(ry+100,rx+100,3),v(ry+100,rx+100,1)) EndIf Next Next While Not KeyHit(1) If KeyDown(205) Then RotateMesh mesh,0,1,0 If KeyDown(203) Then RotateMesh mesh,0,-1,0 If KeyDown(200) Then RotateMesh mesh,1,0,0 If KeyDown(208) Then RotateMesh mesh,-1,0,0 If KeyDown(30) And EntityZ(cam)<0 Then MoveEntity cam,0,0,2 If KeyDown(44) And EntityZ(cam)>-500 Then MoveEntity cam,0,0,-2 If KeyHit(17) Then w=(w+1) Mod 2 If w=1 Then WireFrame(1) Else WireFrame(0) EndIf UpdateWorld RenderWorld Flip Wend ClearWorld() End Perspektivisch mit Textur [B3D]: ![]() Code: [AUSKLAPPEN] Graphics3D 400,400,32,2 BackBuffer() AppTitle "3D-Funktionsgrapher (Perspektive)" Print "Pfeiltasten: Objekt drehen" Print "W: Wireframe an/aus" bild = LoadImage(Input("Bildpfad: ")) Dim v(200,200,3) Dim z#(3) Global rx#,ry# cam=CreateCamera() PositionEntity cam,0,0,-300 mesh=CreateMesh() EntityFX mesh,3 surface=CreateSurface(mesh) For ry=-100 To 100 Step 2 For rx = -100 To 100 Step 2 For i = 0 To 3 x=rx+(i=1)*2+(i=3)*2:y=ry+(i=2)*2+(i=3)*2 z(i)=Sin(Sin(x*2)*Cos(y*2)*360)*50 ; Hier Graphenfunktion eingeben Next If z(0)<999999 And z(0)>-999999 And z(1)<999999 And z(1)>-999999 And z(2)<999999 And z(2)>-999999 And z(3)<999999 And z(3)>-999999 Then v(ry+100,rx+100,0)=AddVertex(surface,rx,z(0),ry) v(ry+100,rx+100,1)=AddVertex(surface,rx+2,z(1),ry) v(ry+100,rx+100,2)=AddVertex(surface,rx,z(2),ry+2) v(ry+100,rx+100,3)=AddVertex(surface,rx+2,z(3),ry+2) rgb=ReadPixel((rx/200+0.5)*ImageWidth(bild),(ry/200+0.5)*ImageHeight(bild),ImageBuffer(bild)) r=(rgb Shr 16) And $FF g=(rgb Shr 8) And $FF b=rgb And $FF For i = 0 To 3 VertexColor surface,v(ry+100,rx+100,i),r,g,b Next AddTriangle(surface,v(ry+100,rx+100,0),v(ry+100,rx+100,1),v(ry+100,rx+100,2)) AddTriangle(surface,v(ry+100,rx+100,2),v(ry+100,rx+100,1),v(ry+100,rx+100,0)) AddTriangle(surface,v(ry+100,rx+100,1),v(ry+100,rx+100,3),v(ry+100,rx+100,2)) AddTriangle(surface,v(ry+100,rx+100,2),v(ry+100,rx+100,3),v(ry+100,rx+100,1)) EndIf Next Next While Not KeyHit(1) If KeyDown(205) Then RotateMesh mesh,0,1,0 If KeyDown(203) Then RotateMesh mesh,0,-1,0 If KeyDown(200) Then RotateMesh mesh,1,0,0 If KeyDown(208) Then RotateMesh mesh,-1,0,0 UpdateWorld RenderWorld Flip Wend ClearWorld() End Stereografisch [B3D]: Theorie: Wikipedia Parallelblick: ![]() ![]() Code: [AUSKLAPPEN] Graphics3D 800,600,32,2 BackBuffer() AppTitle "3D-Funktionsgrapher (Stereografisch)" s=-1 Repeat Cls If KeyHit(200) Or KeyHit(208) Then s=-s Text 0,0,"Welche Blickmethode?" Text 0,12," Parallelblick (linkes Bild fürs linke Auge - rechtes Bild fürs rechte Auge)" Text 0,24," Kreuzblick (linkes Bild fürs rechte Auge - rechtes Bild fürs linke Auge)" Text 0,12+(s+1)*6,">" Flip Until KeyHit(28) FlushKeys() Cls Print "Pfeiltasten: Objekt drehen" Print "A: Nach vorne fahren" Print "Y: Nach hinten fahren" Print "W: Wireframe an/aus" WaitKey Dim v(200,200,3) Dim z#(3) Global rx#,ry# cam=CreateCamera() PositionEntity cam,7*s,0,-300 CameraViewport cam,0,0,400,600 cam2=CreateCamera() PositionEntity cam2,(-7)*s,0,-300 CameraViewport cam2,400,0,400,600 mesh=CreateMesh() EntityFX mesh,3 surface=CreateSurface(mesh) For ry=-100 To 100 Step 2 For rx = -100 To 100 Step 2 For i = 0 To 3 x=rx+(i=1)*2+(i=3)*2:y=ry+(i=2)*2+(i=3)*2 z(i)=Sin(Sqr(x^2+y^2)*10)*40 ; Hier Graphenfunktion eingeben Next If z(0)<999999 And z(0)>-999999 And z(1)<999999 And z(1)>-999999 And z(2)<999999 And z(2)>-999999 And z(3)<999999 And z(3)>-999999 Then v(ry+100,rx+100,0)=AddVertex(surface,rx,z(0),ry) v(ry+100,rx+100,1)=AddVertex(surface,rx+2,z(1),ry) v(ry+100,rx+100,2)=AddVertex(surface,rx,z(2),ry+2) v(ry+100,rx+100,3)=AddVertex(surface,rx+2,z(3),ry+2) For i = 0 To 3 VertexColor surface,v(ry+100,rx+100,i),128+z(i),128+z(i),128+z(i),1 Next AddTriangle(surface,v(ry+100,rx+100,0),v(ry+100,rx+100,1),v(ry+100,rx+100,2)) AddTriangle(surface,v(ry+100,rx+100,2),v(ry+100,rx+100,1),v(ry+100,rx+100,0)) AddTriangle(surface,v(ry+100,rx+100,1),v(ry+100,rx+100,3),v(ry+100,rx+100,2)) AddTriangle(surface,v(ry+100,rx+100,2),v(ry+100,rx+100,3),v(ry+100,rx+100,1)) EndIf Next Next While Not KeyHit(1) If KeyDown(205) Then RotateMesh mesh,0,1,0 If KeyDown(203) Then RotateMesh mesh,0,-1,0 If KeyDown(200) Then RotateMesh mesh,1,0,0 If KeyDown(208) Then RotateMesh mesh,-1,0,0 If KeyDown(30) And EntityZ(cam)<0 Then MoveEntity cam,0,0,2: MoveEntity cam2,0,0,2 If KeyDown(44) And EntityZ(cam)>-500 Then MoveEntity cam,0,0,-2: MoveEntity cam2,0,0,-2 If KeyHit(17) Then w=(w+1) Mod 2 If w=1 Then WireFrame(1) Else WireFrame(0) EndIf UpdateWorld RenderWorld Flip Wend ClearWorld() End Stereografisch mit Textur [B3D]: Theorie: Wikipedia Parallelblick: ![]() ![]() Code: [AUSKLAPPEN] Graphics3D 400,300,32,2 BackBuffer() AppTitle "3D-Funktionsgrapher (Stereografisch-Textur)" bild = LoadImage(Input("Bildpfad: ")) FlushKeys() s=-1 Repeat Cls If KeyHit(200) Or KeyHit(208) Then s=-s Text 0,0,"Welche Blickmethode?" Text 0,12," Parallelblick (linkes Bild fürs linke Auge)" Text 0,24," Kreuzblick (linkes Bild fürs rechte Auge)" Text 0,12+(s+1)*6,">" Flip Until KeyHit(28) FlushKeys() Cls:Locate 0,0 Print "Pfeiltasten: Objekt drehen" Print "A: Nach vorne fahren" Print "Y: Nach hinten fahren" Print "W: Wireframe an/aus" WaitKey Dim v(200,200,3) Dim z#(3) Global rx#,ry# cam=CreateCamera() PositionEntity cam,7*s,0,-300 CameraViewport cam,0,0,200,300 cam2=CreateCamera() PositionEntity cam2,(-7)*s,0,-300 CameraViewport cam2,200,0,200,300 mesh=CreateMesh() EntityFX mesh,3 surface=CreateSurface(mesh) For ry=-100 To 100 Step 2 For rx = -100 To 100 Step 2 For i = 0 To 3 x=rx+(i=1)*2+(i=3)*2:y=ry+(i=2)*2+(i=3)*2 z(i)=Sin((Cos(x)-x*y)/10)*40 ; Hier Graphenfunktion eingeben Next If z(0)<999999 And z(0)>-999999 And z(1)<999999 And z(1)>-999999 And z(2)<999999 And z(2)>-999999 And z(3)<999999 And z(3)>-999999 Then v(ry+100,rx+100,0)=AddVertex(surface,rx,z(0),ry) v(ry+100,rx+100,1)=AddVertex(surface,rx+2,z(1),ry) v(ry+100,rx+100,2)=AddVertex(surface,rx,z(2),ry+2) v(ry+100,rx+100,3)=AddVertex(surface,rx+2,z(3),ry+2) rgb=ReadPixel((rx/200+0.5)*ImageWidth(bild),(ry/200+0.5)*ImageHeight(bild),ImageBuffer(bild)) r=(rgb Shr 16) And $FF g=(rgb Shr 8) And $FF b=rgb And $FF For i = 0 To 3 VertexColor surface,v(ry+100,rx+100,i),r,g,b Next AddTriangle(surface,v(ry+100,rx+100,0),v(ry+100,rx+100,1),v(ry+100,rx+100,2)) AddTriangle(surface,v(ry+100,rx+100,2),v(ry+100,rx+100,1),v(ry+100,rx+100,0)) AddTriangle(surface,v(ry+100,rx+100,1),v(ry+100,rx+100,3),v(ry+100,rx+100,2)) AddTriangle(surface,v(ry+100,rx+100,2),v(ry+100,rx+100,3),v(ry+100,rx+100,1)) EndIf Next Next While Not KeyHit(1) If KeyDown(205) Then RotateMesh mesh,0,1,0 If KeyDown(203) Then RotateMesh mesh,0,-1,0 If KeyDown(200) Then RotateMesh mesh,1,0,0 If KeyDown(208) Then RotateMesh mesh,-1,0,0 If KeyDown(30) And EntityZ(cam)<0 Then MoveEntity cam,0,0,2: MoveEntity cam2,0,0,2 If KeyDown(44) And EntityZ(cam)>-500 Then MoveEntity cam,0,0,-2: MoveEntity cam2,0,0,-2 If KeyHit(17) Then w=(w+1) Mod 2 If w=1 Then WireFrame(1) Else WireFrame(0) EndIf UpdateWorld RenderWorld Flip Wend ClearWorld() End |
||
- Zuletzt bearbeitet von Froggy am Fr, Jul 06, 2007 19:14, insgesamt 25-mal bearbeitet
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also :
Erstmal Ein sehr großes Lob an dich ! sieht cool aus !! |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Froggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Geht so, hätte lieber so etwas:
http://www.arndt-bruenner.de/m...tter3d.htm Aber das ist nun wirklich zu schwer für mich ![]() |
||
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist das für das Codearchiv würdig? Ich finde nicht, denn das kann sich jeder innerhalb von 5 Minuten selber coden. Ausserdem ist der Code kein Bisschen formatiert... | ||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
Froggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Erstmal: Was meinst du mit formatiert?
Und ja, du hast recht. Es ist einfach, aber mir geht es dabei um die Idee. Man muss ja irgendwie drauf kommen. Falls ein Mod trotzdem etwas dagegen hat: Einfach Thread löschen oder closen. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Formatierter Code: [AUSKLAPPEN] While Not KeyHit(1)
For Y=0 to 7 For X=0 to 7 ...machwas... Next Next Wend End Unformatierter Code: [AUSKLAPPEN] While Not KeyHit(1)
For Y=0 to 7 For X=0 to 7 ...machwas... Next Next Wend End |
||
Froggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Naja, das ist bei einem so kurzen Code ja nicht weiter schlimm.
Aber ich habs trotzdem mal gemacht: EDIT: Code entfernt. Alle Codes sind im Titelpost zu finden. |
||
- Zuletzt bearbeitet von Froggy am So, Feb 11, 2007 14:22, insgesamt einmal bearbeitet
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
@froggy : gib mal auf der I-Seite die du angegebne hast, folgendes ein:
Code: [AUSKLAPPEN] sin(sqr(x*x+y*y)+x^2-y^2) sieht auch gut aus ^^ |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Froggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, toll ^^
Ich hab noch eine Grapher-Form programmiert, die die Form aus gefüllten Dreiecken zusammensetzt: EDIT: Code entfernt. Alle Codes sind im Titelpost zu finden. |
||
- Zuletzt bearbeitet von Froggy am So, Feb 11, 2007 14:22, insgesamt einmal bearbeitet
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ganze schwängbar machen wird wohl nicht gehen oder also mit ist keine Idee gekommen (wir wohl sehr langsam sein) | ||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
flashmaxel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Geht schon allerdings nicht mit so vielen Renderschritten. Wenn man das ganze reduziert kommt man schon auf eine akzeptable Geschwindigkeit ...
Code: [AUSKLAPPEN] For ry#=-200 To 200 Step 10 ;<---- renderschritte
Color 128+ry/2,128+ry/2,128+ry/2 For rx#=-200 To 200 Step 10 ;<---- renderschritte Übrigends wenn man statt Plot Rect nimmt sieht es noch schöner aus. Man kann auch recht einfach eine Pseudo Textur draufrendern - sieht auch interessant aus ... |
||
Real C programmers never die; they cast to void. |
Froggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe ja den Gitter-Grapher gemacht, der recht schnell rendert, wenn man das Flip unter das darauffolgende Next setzt.
Man könnte also wie auf dieser Internetseite bei Bewegung nur das Gitter anzeigen und es sonst rendern lassen. EDIT: Mal ein Anfang. Man kann das Ding nach links oder rechts drehen. Werde mich gleich an oben und unten setzen ![]() EDIT: Code entfernt. Alle Codes sind im Titelpost zu finden. EDIT 2: Die andere Drehung ist mir zu schwer, bitte helft mir! |
||
- Zuletzt bearbeitet von Froggy am So, Feb 11, 2007 14:22, insgesamt einmal bearbeitet
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab jetzt keine Idee zur drehung nur ist mir aufgefallen das das füllen mit
dem code hier wesentlch schneller geht Code: [AUSKLAPPEN] Graphics 600,600,32,2 SetBuffer BackBuffer() Global x#,y# Repeat Cls AppTitle "3D-Funktionsgrapher - Bild wird gerendert..." For y#=-200 To 200 Color 128+y/2,128+y/2,128+y/2 For x#=-200 To 200 drawfunc( Sin(Sqr(x^2+y^2)*2)*50 ) ; Hier Graphenfunktion eingeben (diese Zeile für mehr Funktionen kopieren) Next Flip Next AppTitle "3D-Funktionsgrapher" FlushKeys Repeat If KeyHit(1) Then End Until KeyHit(28) Forever Function drawfunc(z) Rect 300+x+y*0.5,300+y*0.5-z,5,5 End Function |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
Froggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sieht halt an den Rändern nicht so toll aus.
Es geht mir ja eigentlich nicht darum, etwas Drehbares zu machen, sondern möglichst schöne Bilder zu rendern. Ich füge mal alle verschiedenen Modi dem Anfangspost hinzu. EDIT: Ich hab mal herumexperimentiert und einen Texturen-Modus geschrieben, bei dem ein beliebiges Bild über die Form gelegt wird. Sieht mit den Windows-Beispielbildern gar nicht mal so schlecht aus. EDIT: Siehe 4. Codebeispiel im Titelpost EDIT 2: Habe ein Screenshot-Beispiel zum Titel-Post hinzugefügt. |
||
Froggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sorry für den Doppelpost, aber ich muss den Thread mal ein bisschen pushen.
Ich hab es nun endlich hingekriegt, den Gittermodus frei drehbar zu machen (war gar nicht so schwer, nur ein bisschen ein Sinus- und Cosinus-Dschungel) Weiter habe ich noch Screenshots zu jedem Modus hinzugefügt. Gruss, Froggy PS: Falls das Desinteresse weiter bestehen bleibt, werde ich euch natürlich mit weiteren Doppelposts verschonen. |
||
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke das du das schwenkbar gemacht hast sieht super aus Danke | ||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
Froggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Habe nun auch (mit Hilfe eines Kollegen) einen Modus in B3D geschrieben (siehe Titelpost, unterster Code).
Sieht im Wireframe-Modus nicht schlecht aus, jedoch macht noch der ausgefüllte Modus Probleme. Lights haben irgendwie keinen Einfluss auf die Form und wie man Triangles färbt, weiss weder ich noch mein Kollege). Bitte um Hilfe! |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier mal ein Farbbeispiel:
Nach CreateMesh() Code: [AUSKLAPPEN] EntityFX mesh,3
Nach den AddVertex -Befehlen Code: [AUSKLAPPEN] VertexColor surface,v(ry+100,rx+100,0),128-z(0)*2,255-z(0)*2,128,1
VertexColor surface,v(ry+100,rx+100,1),128-z(1)*2,255-z(1)*2,128,1 VertexColor surface,v(ry+100,rx+100,2),128-z(2)*2,255-z(2)*2,128,1 VertexColor surface,v(ry+100,rx+100,3),128-z(3)*2,255-z(3)*2,128,1 Farbanpassungen habe ich jetzt nicht gemacht. Kann also sein, das die eine oder andere Farbe aus dem Wertebereich raus geht. Was aber kein Problem ist, da Blitz diese dann korrigiert. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Froggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke! Jetzt hab ich es vollständig hingekriegt ![]() Natürlich wäre Beleuchtung besser, aber das tut's auch. @ all: Neue Versionen in B3D im Titelpost (unterste beide Codebeispiele) |
||
Froggy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Seit längerem melde ich mich wieder mal, denn ich habe meinen 3D-Funktionsgrapher erweitert. Nun ist er sogar stereografisch, das heisst, man kann den Funktionsgraphen mit einer stereoskopischen Blicktechnik, dem Kreuz- oder Parallelblick, mit Tiefenwirkung wahrnehmen.
Für 3D-Brillen ist der Grapher leider nicht gedacht, da es (mit meinem Algorithmus) mehrere Sekunden benötigt, um ein 3D-Brillen-Bild aus zwei stereoskopischen Halbbildern zu rendern. Wer eine schnellere Methode kennt, einfach ins Programm einbauen, ist ja open-source. Für den stereografischen Funktionsgrapher siehe unterster Code im Titelpost |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group