Kuchendiagramm?
Übersicht

![]() |
Der EisvogelBetreff: Kuchendiagramm? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
Ich würde gerne in B3D ein 3D-Kuchendiagramm wie in Excel erstellen. Aber ich habe keine Ahnung wie. Ich hatte gedacht, ich erstelle einen Zylinder und skaliere diesen in die Breite und Tiefe. Das geht auch. Aber wie ich jetzt eine Texture draf bekomme, dass das wie ein 3D-Kuchendiagramm aussieht weiß icht nicht. Geht das überhaupt? Gibt es eine bessere Lösung? MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. lösung : Wie du schon gesagt hast, einfach einen cylinder nehmen und den so auf die größe scallieren, das er die größe des gesammten Kuchendiagramm hat. Dann nur noch eine Texture erstellen, die so aussieht, wie ein kuchen diagramm nur halt das es kein kreis sein soll sondern ein rechteeck, und das legst du dann auf den cylinder und verschiebst die texture mit PositionTexture.
2.Lösung : Du kannst dir ja eine Function oder Algorythmus schreiben, der immer ein Teil stück erstellt (dann mit AddVertEx, AddTriangle und Sin/COS etc.).. mfg ToeB |
||
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! |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie genau sollte diese Texture aussehen? Kannst du mal ein Dummi Bild machen? Bin auf dem Gebiet 3D sehr unerfahren. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab mal eines gemacht. Fuchs dich da rein, dann verstehst du es auch. Ist ganz einfach ![]() Code: [AUSKLAPPEN] Graphics3D 1024,768,0,2
SetBuffer BackBuffer() Local Timer=CreateTimer(60) Local Camera=CreateCamera() Local Diagram=CreateDiagram(0,0,5, 0,0,0) PaintDiagram(Diagram,0,20, 2, 255,0,0) PaintDiagram(Diagram,20,30, 2, 255,255,0) PaintDiagram(Diagram,30,70, 2, 0,255,0) PaintDiagram(Diagram,70,90, 2, 0,255,255) PaintDiagram(Diagram,90,100, 2, 255,0,255) While Not KeyHit(1) TurnEntity Diagram,1,0,0 If KeyHit(57) Then ClearDiagram(Diagram) WaitTimer Timer RenderWorld Flip 0 Wend End Function CreateDiagram(FXP#,FYP#,FZP#,FXR#,FYR#,FZR#) Local IMesh%=CreateMesh() Local IFace%=CreateSurface(IMesh) PositionEntity IMesh,FXP,FYP,FZP RotateEntity IMesh,FXR,FYR,FZR EntityFX IMesh,1+2+16+32 Return IMesh End Function Function PaintDiagram(FHandle%,FVon%,FBis%,FRadius#=2,FR%=255,FG%=0,FB%=0) FVon=FVon*3.60 FBis=FBis*3.60 Local ICount# Local XS#,YS# Local IFace% Local IVC% Local IV1% Local IV2% IFace=GetSurface(FHandle,1) If CountTriangles(IFace)>8192 Then RuntimeError "Man sollte auch mal 'ClearDiagram' ausführen!" If FVon>-360 Then If FBis<+720 Then IVC=AddVertex(IFace,0,0,0) VertexColor IFace,IVC,FR/2,FG/2,FB/2 For ICount=FVon To FBis+1 XS=Sin(ICount)*FRadius YS=Cos(ICount)*FRadius IV1=AddVertex(IFace,XS,YS,0) VertexColor IFace,IV1,FR,FG,FB If ICount<>FVon Then AddTriangle(IFace,IVC,IV2,IV1) IV2=IV1 Next End If End If End Function Function ClearDiagram(FHandle%) ClearSurface GetSurface(FHandle,1) End Function |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Verflixt... Ich wollte auch was probieren und dann kommt hectic mir zuvor ![]() Naja, interessierte mcih einfach mit dem Erstellen per AddVertex und AddTriangle und damit ichs nicht umsonst gemacht hab, hier mein Versuch: Code: [AUSKLAPPEN] Graphics3D 800,600,0,2
SetBuffer BackBuffer() SeedRnd MilliSecs() Local cam=CreateCamera() PositionEntity cam,0,1,-10 Local timer=CreateTimer(50) Type anteil Field percent# End Type ;Das Erstellen der Teile ginge sicher noch eleganter... Local temp.anteil=New anteil temp\percent=0.1 temp.anteil=New anteil temp\percent=0.3 temp.anteil=New anteil temp\percent=0.4 temp.anteil=New anteil temp\percent=0.2 Local test=Kuchendiagramm(5,2) RotateEntity test,-30,0,0 Repeat WireFrame KeyDown(15) TurnEntity test,0,1,0 RenderWorld WaitTimer timer Flip 0:Cls Until KeyHit(1) End Function Kuchendiagramm(r,height) Local mesh=CreateMesh() EntityFX mesh,2 Local mesh2 Local w=0 Local anteil.anteil For anteil=Each anteil mesh2=KreisSegment(5,2,360*anteil\percent,Rand(0,255),Rand(0,255),Rand(0,255)) RotateMesh mesh2,0,w,0 AddMesh mesh2,mesh FreeEntity mesh2 w=w+360*anteil\percent Next Return mesh End Function Function KreisSegment(r,h,gesamtw,cr=255,cg=255,cb=255,a=1.0,quality=5) Local mesh=CreateMesh() Local sf=CreateSurface(mesh) ;Mitte (Achse) v0=AddVertex(sf,0,0,0) v1=AddVertex(sf,0,h,0) ;Kreisbogen ;Seitenfläche v2=AddVertex(sf,r,0,0) v3=AddVertex(sf,r,h,0) AddTriangle(sf,v0,v1,v2) AddTriangle(sf,v1,v3,v2) Local winkelstep#=(gesamtw/Float(quality)) Local w#=winkelstep# ;Zwischensegmente, um schöner auszusehen Repeat v4=AddVertex(sf,Cos(w)*r,0,Sin(w)*r) v5=AddVertex(sf,Cos(w)*r,h,Sin(w)*r) AddTriangle(sf,v0,v2,v4) AddTriangle(sf,v5,v3,v1) AddTriangle(sf,v5,v4,v2) AddTriangle(sf,v2,v3,v5) v2=v4 v3=v5 If w>=gesamtw Then Exit w=w+winkelstep# Forever ;Seitenfläche AddTriangle(sf,v2,v1,v0) AddTriangle(sf,v2,v3,v1) EntityFX mesh,2 Local count=CountVertices(sf) DebugLog "Vertices: "+count DebugLog "Triangles: "+CountTriangles(sf) For i=0 To count VertexColor(sf,i,cr,cg,cb,a) Next UpdateNormals mesh Return mesh End Function |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group