gedrehte Ellipse

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Midimaster

Betreff: gedrehte Ellipse

BeitragDo, Mai 05, 2011 11:49
Antworten mit Zitat
Benutzer-Profile anzeigen
hier eine Möglichkeit Ellipsen zu drehen und dabei auch Start und Endwinkel anzugeben. Außerdem kann man ein "Filled"-Flag setzen:
BlitzMax: [AUSKLAPPEN]
SuperStrict
Graphics 800,600
SetColor 255,255,255
SetColor 255,255,255
For Local i%=0 To 360 Step 1
Cls
DrawRotatedOval 300,300,100,40,i
Flip 0
Next
WaitKey

Function DrawRotatedOval(centerX#, centerY# , Width# , Height# , Rotation# , StartAngle#=0, EndAngle#=360 , Filled%=0)
Local i# , distance# , angle# , actSin# , actCos# , preSin#, preCos# , StepRate#
stepRate=(250-200*filled)/Sqr(width^2 + height^2)
i=StartAngle

While i<EndAngle+stepRate

distance= Sqr( (Sin(i)*Width)^2 + (Cos(i)*Height)^2 )
angle=ATan2( Sin(i)*Width , Cos(i)*Height)
actSin = Sin(angle + Rotation)*distance + centerX
actCos = Cos(angle + Rotation)*distance + centerY
If i>0
DrawLine actSin , actCos , preSin , preCos
EndIf
If Filled<>0 Then
DrawLine centerX , centerY , actSin , actCos
EndIf
i=i+stepRate
preSin = actSin
preCos = actCos
Wend

End Function

d-bug

BeitragDo, Mai 05, 2011 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallöle,

warum mit DrawLine? Zumindest bei mir kann man gefüllte Ellipsen auch mit SetRotation(angle) und DrawOval(x,y,width,height) zeichnen und drehen. Das ist mit Sicherheit schneller als eine Ellipse mit DrawLine zu füllen, da es sich dabei um einen gefüllten Polygon handelt. Mit OpenGL kann man dann ungefüllte Ellipesen noch mit glBegin(GL_LINE_LOOP) zeichnen lassen, was ebenfalls schneller ist als mit einzelnen Linien. Bei DX weiß ich es allerdings nicht.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group