Problem mit Lichtkegel (Kreise und Winkel)

Previous topic - Next topic

S. P. Gardebiter

Hi!
Ich habe ein Problem mit meiner Lichtkegel Berechnung.
Es geht um Kreise und Winkel.

Es ist wie folgt:


Man stelle sich geistig einen Kreis vor, der um den quadratischen Spieler Sprite gezogen wird. Am Rand dieses Kreises soll nun die Spitze des Lichtkegels liegen, egal um welchen Winkel sie gerade gedreht ist. (Ich benutze Rotosprite, aber da wird der Kegel immer um den Mittelpunkt gedreht.) Das Bild meines Lichtkegels ist nicht quadratisch.
~ Cave Story rules! ~

Kitty Hello

Wenn Du's einfach willst, mach das Sprite größer, so dass der Mittelpunkt da ist, wo auch der Mittelpunkt des spielers wäre. Sonst musst Du das Sprite auch noch mitverschieben.

S. P. Gardebiter

Dann wäre die Spitze des Lichtkegels im Mittelpunkt des Spielers.
Ich wollte eigentlich mit Sinus und CoSinus arbeiten, aber ich weiß nicht wie ich sie dafür korrekt benutze.
~ Cave Story rules! ~

Kitty Hello

Code (glbasic) Select

x = xm + cos(phi)*r
y = ym - sin(phi)*r


xm,ym = Mittelpunkt, Spieler
r = Radius des Kreises
phi = Winkel des Lichtes. 0->, 90^, 180 <-, 270v

S. P. Gardebiter

Danke, hab es ausprobiert, funktioniert aber nicht ganz :o
Er sollte sich erstmal um die Spitze drehen können, den reste könnte ich machen.
~ Cave Story rules! ~

Hemlos

x,y=Mittelpunkt, Spieler
WinkelPhi=ein Winkel für Starte+Ende
KugelRadiusStarte =50                     //Starte LichtX/LichtY, 50 ist weit genug hier?
KugelRadiusEnde   =100+KugelRadius  //Ende, 100+50 ist weit genug hier?

LichtX=x+KugelRadiusStarte*COS(WinkelPhi)
LichtY=y+KugelRadiusStarte*SIN(WinkelPhi)
EndeLichtX=x+KugelRadiusEnde*COS(WinkelPhi)
EndeLichtY=y+KugelRadiusEnde*SIN(WinkelPhi)

X_SPOT_LT 0, LichtX,0,LichtY,EndeLichtX,0,EndeLichtY,45(?)
Bing ChatGpt is pretty smart :O

S. P. Gardebiter

Quote from: Hemlos on 2008-Nov-10
x,y=Mittelpunkt, Spieler
WinkelPhi=ein Winkel für Starte+Ende
KugelRadiusStarte =50                     //Starte LichtX/LichtY, 50 ist weit genug hier?
KugelRadiusEnde   =100+KugelRadius  //Ende, 100+50 ist weit genug hier?

LichtX=x+KugelRadiusStarte*COS(WinkelPhi)
LichtY=y+KugelRadiusStarte*SIN(WinkelPhi)
EndeLichtX=x+KugelRadiusEnde*COS(WinkelPhi)
EndeLichtY=y+KugelRadiusEnde*SIN(WinkelPhi)

X_SPOT_LT 0, LichtX,0,LichtY,EndeLichtX,0,EndeLichtY,45(?)

Thank you, but sadly I need it for 2D, I used ROTOSPRITE. :o
Now, if I think about it I come to the conclusion, that I should use a POLYVECTOR for my function :D

Dankeschön, aber leider brauche ich es für 2D, ich habe ROTOSPRITE benutzt. :o
Wenn ich darüber nachdenke, komme ich zu dem Entschluss das ich wohl einen POLYVECTOR benutzen sollte :D
~ Cave Story rules! ~

Kitty Hello

Code (glbasic) Select



GETFONTSIZE fx,fy
SETTRANSPARENCY 0
PRINT "<",0,0
GRABSPRITE 0,0,0,fx,fy
BLACKSCREEN
STRETCHSPRITE 0,0,0,128,128
GRABSPRITE 0,0,0,128,128





WHILE TRUE

INC phi, 2
MOUSESTATE xm, ym, b1, b2


DRAWRECT xm-32, ym-32, 64,64, RGB(255,0,0)

// light
GETSPRITESIZE 0, sx, sy
r = sx/2 + 32 // size of light + half size of player
x = xm + COS(phi)*r
y = ym - SIN(phi)*r
ROTOSPRITE 0, x-sx/2, y-sy/2, phi
SHOWSCREEN



WEND

Hemlos

Quote from: S. P. Gardebiter on 2008-Nov-10

Thank you, but sadly I need it for 2D, I used ROTOSPRITE. :o
Mathematik ist die gleiche, Math is the same.

Quote
Now, if I think about it I come to the conclusion, that I should use a POLYVECTOR for my function :D
gute Idee  :good:
Bing ChatGpt is pretty smart :O

S. P. Gardebiter

Quote from: Kitty Hello on 2008-Nov-11
Code (glbasic) Select



GETFONTSIZE fx,fy
SETTRANSPARENCY 0
PRINT "<",0,0
GRABSPRITE 0,0,0,fx,fy
BLACKSCREEN
STRETCHSPRITE 0,0,0,128,128
GRABSPRITE 0,0,0,128,128





WHILE TRUE

INC phi, 2
MOUSESTATE xm, ym, b1, b2


DRAWRECT xm-32, ym-32, 64,64, RGB(255,0,0)

// light
GETSPRITESIZE 0, sx, sy
r = sx/2 + 32 // size of light + half size of player
x = xm + COS(phi)*r
y = ym - SIN(phi)*r
ROTOSPRITE 0, x-sx/2, y-sy/2, phi
SHOWSCREEN



WEND


Thanks Gernot. I will save that if I need it again.

I'm doing it with a polyvector now and it works. :o
~ Cave Story rules! ~