CreateTorus()

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Devils Child

Betreff: CreateTorus()

BeitragFr, Sep 23, 2005 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
hi!

das ist ne kleine torus-funktion, die segmente und der innerre radius könnt ihr verändern, das alles hat sogar texturen!

viel spass


BlitzBasic: [AUSKLAPPEN]
Graphics3D 800, 600, 32, 2
SetBuffer BackBuffer()
SeedRnd MilliSecs()

;Globs
Global FPS#
Dim Tmp#(101, 1)

;Camera
Global Cam = CreateCamera()
CameraClsColor Cam, 40, 40, 255
PositionEntity Cam, 0, 0, -1.5
CameraRange Cam, .01, 1000

;Entity
Entity = CreateTorus(8, .5) ; 8 Segments, 5=InnerRadius
EntityTexture Entity, LoadTexture(\"Texture.jpg\")
Surf = GetSurface(Entity, 1)
For i = 0 To CountVertices(Surf) - 1
VertexTexCoords Surf, i, VertexX(Surf, i), VertexY(Surf, i), VertexZ(Surf, i)
Next
CreateLight()

While Not KeyHit(1)
rot# = MilliSecs() / 10
RotateEntity Entity, rot#, rot#, rot#

;FPS
loops = loops + 1
If MilliSecs() - time1 > 500 Then
FPS# = loops * 2
loops = 0
time1 = MilliSecs()
End If

RenderWorld
Text 10, 10, \"FPS = \" + fps
Flip 0
Wend
End

Function CreateTorus(seg#, rad#)
Mesh = CreateMesh()
Surf = CreateSurface(Mesh)
For i = 1 To seg + 1
w# = 360 * i / seg
Tmp#(i, 0) = Cos(w#) / 2
Tmp#(i, 1) = Sin(w#) / 2
Next
For i = 1 To seg
sCreatePolygon(Surf, Tmp#(i, 0), -.5, Tmp#(i, 1), Tmp#(i, 0), .5, Tmp#(i, 1), Tmp#(i + 1, 0), -.5, Tmp#(i + 1, 1))
sCreatePolygon(Surf, Tmp#(i + 1, 0), .5, Tmp#(i + 1, 1), Tmp#(i + 1, 0), -.5, Tmp#(i + 1, 1), Tmp#(i, 0), .5, Tmp#(i, 1))
sCreatePolygon(Surf, Tmp#(i, 0) * rad#, -.5, Tmp#(i, 1) * rad#, Tmp#(i + 1, 0) * rad#, -.5, Tmp#(i + 1, 1) * rad#, Tmp#(i, 0) * rad#, .5, Tmp#(i, 1) * rad#)
sCreatePolygon(Surf, Tmp#(i + 1, 0) * rad#, .5, Tmp#(i + 1, 1) * rad#, Tmp#(i, 0) * rad#, .5, Tmp#(i, 1) * rad#, Tmp#(i + 1, 0) * rad#, -.5, Tmp#(i + 1, 1) * rad#)
Next
For i = 1 To seg
sCreatePolygon(Surf, Tmp#(i, 0), -.5, Tmp#(i, 1), Tmp#(i + 1, 0), -.5, Tmp#(i + 1, 1), Tmp#(i, 0) * rad#, -.5, Tmp#(i, 1) * rad#)
sCreatePolygon(Surf, Tmp#(i + 1, 0), -.5, Tmp#(i + 1, 1), Tmp#(i + 1, 0) * rad#, -.5, Tmp#(i + 1, 1) * rad#, Tmp#(i, 0) * rad#, -.5, Tmp#(i, 1) * rad#)
Next
For i = 1 To seg
sCreatePolygon(Surf, Tmp#(i, 0), .5, Tmp#(i, 1), Tmp#(i, 0) * rad#, .5, Tmp#(i, 1) * rad#, Tmp#(i + 1, 0), .5, Tmp#(i + 1, 1))
sCreatePolygon(Surf, Tmp#(i + 1, 0), .5, Tmp#(i + 1, 1), Tmp#(i, 0) * rad#, .5, Tmp#(i, 1) * rad#, Tmp#(i + 1, 0) * rad#, .5, Tmp#(i + 1, 1) * rad#)
Next
UpdateNormals Mesh
Return Mesh
End Function

Function sCreatePolygon(Surf, x1#, y1#, z1#, x2#, y2#, z2#, x3#, y3#, z3#)
v1 = AddVertex(Surf, x1#, y1#, z1#)
v2 = AddVertex(Surf, x2#, y2#, z2#)
v3 = AddVertex(Surf, x3#, y3#, z3#)
AddTriangle Surf, v1, v2, v3
End Function
*X-Ware Member*

Mission to Hell[Ego-Shooter]
Hier Vollversion runterladen:
http://patrick-sch.de/spiele/m...ersion.zip

ich antworte auf jede PN
 

#Reaper

Newsposter

BeitragFr, Sep 23, 2005 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, ganz net Smile

Kann man bestimmt mal gebrauchen Smile
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Justus

BeitragFr, Sep 23, 2005 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.shadowturtle.de/sit...s&adm=

Devils Child

BeitragFr, Sep 23, 2005 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
aha, sieht auch nett aus Smile
*X-Ware Member*

Mission to Hell[Ego-Shooter]
Hier Vollversion runterladen:
http://patrick-sch.de/spiele/m...ersion.zip

ich antworte auf jede PN

Devils Child

BeitragMi, Sep 28, 2005 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
mal ne frage: kennt jemand ne funktion die eine kugel erstellt.

meien funktion hier erstellt ein torus, die von shadowturtle einen ring, aber wie erstellt man eine kugel?

CreateSphere(seg), aber wie kann man das ohne createsphere lösen?
*X-Ware Member*

Mission to Hell[Ego-Shooter]
Hier Vollversion runterladen:
http://patrick-sch.de/spiele/m...ersion.zip

ich antworte auf jede PN

Jan_

Ehemaliger Admin

BeitragMi, Sep 28, 2005 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
for i= 0 to 360
x#=sin(i)
y#=(i/180)-1.0
z#=cos(i)
;...
next
between angels and insects
 

#Reaper

Newsposter

BeitragMi, Sep 28, 2005 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau mal bei blitzbasic.com, da gibt es so eine funktion.

Edit: Irgendwo hier, hab keine Zeit zu suchen Wink
http://www.blitzbasic.com/code...php?cat=12


MfG
#Reaper
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Devils Child

BeitragMi, Sep 28, 2005 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
jan_: ich hab sone funktion aber der witzt dabei ist, dass wenn ich was anderes als 8 oder 16 segmente nehme es einfach nach dreck aussieht.

reaper#: danke, ich werde mal schaun
*X-Ware Member*

Mission to Hell[Ego-Shooter]
Hier Vollversion runterladen:
http://patrick-sch.de/spiele/m...ersion.zip

ich antworte auf jede PN

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group