SchussWinkel

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Lunatix

Betreff: SchussWinkel

BeitragSo, Jul 03, 2005 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute!

Also ich habe folgendes problem :

ich habe eine figur, die schiesst schüsse halt. aber z.Z. nur geradeaus.

so meine überlegung ist : sie kann ca 90 grad nach oben und 90 nach unten ballern. Dazu brauche ich eine Winkel berechnung die da soweit ich herasusgefunden habe, Kathetensatz heisst. ->

*=freier Platz
# und | = linie


***** C*<- dort ist Y2
***#**|**#
**#***|***#
*#****|****#
A------D-------B <- hier Beta

"Im Dreieck BCD gilt : Y2 + ß = 90"
Heisst also : Y2 = 90 / ß

So, damit hätte ich den schusswinkel zwischen dem player und der maus berechnet. Theoretisch aber auch nur. Denn praktisch fehlt mir der winkel Beta! woher krieg ich den?

würdet ihr es anders machen?
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Jack

BeitragSo, Jul 03, 2005 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Lies dir ein Winkel oder Mathematik-Tutorial. Auf die Schnelle fällt mir nichts ein. Laughing
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein

Lunatix

BeitragSo, Jul 03, 2005 13:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Jacky du bist der beste! hier guck mal den link

http://www.mathepower.com/rechtw.php

Für rechtwinklige Dreiecke mit rechtem Winkel bei C gilt:
Flächeninhalt = (a * b) / 2
a² + b² = c² (Satz des Pythagoras)
a² = c * p, b² = c * q (Kathetensatz des Euklid)
h² = p * q (Höhensatz des Euklid)
sin Alpha = a / c

heisst also ich hab A ubd B
muss ich jetz für Alpha= A / C und dann sinus aus dem ergebniss machen, dann hab ich meinen Winkel?
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Jack

BeitragSo, Jul 03, 2005 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Junkprogger hat Folgendes geschrieben:
Jacky du bist der beste!

War das jetzt ironisch gemeint Question
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein

Lunatix

BeitragSo, Jul 03, 2005 13:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Das war ein freudenausruf. nix mit schwul oder du bist ab jetz er könig des forums zutun hat.
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Clonker

BeitragSo, Jul 03, 2005 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht hilft das hier dir weiter:

Code: [AUSKLAPPEN]
Graphics 640,480,32,2
SetBuffer BackBuffer()

Repeat
   HidePointer()
   ;C
   ; *
   ; * * 
   ; *   *
   ; *     *
   ; ********
   ;A         B
   Cls
   Rect 319,448,2,4
   
   Color 100,100,100      
   Rect 0,450,640,1
   Rect 320,0,1,450
   Oval 0,130,640,640,0
   Color 255,255,255   
   
   If MouseY() <= 450 Then
      Line 320,450,MouseX(),MouseY()
      Line MouseX(),450,MouseX(),MouseY()
      Line 320,450,MouseX(),450
      
      Text MouseX(),MouseY()-15,"C"
      Text 315,455,"B"
      Text MouseX()-5,455,"A"
      
      b# = 450-MouseY()
      c# = 320-MouseX()
      a# = Sqr(b^2+c^2)
      
      alpha# = 90
      
      ;a/sin(alpha) = b/sin(beta)
      beta# = (Sin(alpha)*b)/a
      beta = ASin(beta)
      
      gamma# = 180-beta-alpha
      
      Text 100,10,"Alpha " +alpha      
      Text 100,22,"Beta " + beta
      Text 100,34,"Gamma " + gamma
      
      Text 10,10,"a="+a
      Text 10,22,"b="+b
      Text 10,34,"c="+c
      
      Color 255,0,0
      Text 250,10,"320*sin(gamma)*-1|320*cos(gamma)*-1"
      Text 250,22,"("+(320+320*sin(gamma)*-1)+"|"+(450+320*cos(gamma)*-1)+")"
      
      If c < 0 Then gamma = gamma *-1
      Rect 320+(320*sin(gamma)*-1)-2,450+(320*cos(gamma)*-1)-2,4,4
      Color 255,255,255         
   EndIf
   
   
   Flip
Until KeyHit(1)
Die exzessive Akkumulation von Fremdwörtern suggeriert pseudointellektuelle Kompetenz.

Athlon XP 2800|Radeon 9600 Pro|512MB DDR RAM|240GB Festplatte

D2006

Administrator

BeitragSo, Jul 03, 2005 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
ql:ATan2

Falls Benutzung des Befehls unklar: user posted image Suchen


MfG
D2006

Lunatix

BeitragSo, Jul 03, 2005 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, atan2 auch vorhin entdeckt. Aber ginge auch so :

a²+B²=c²

Sin Alpha= a / c

so mein problem dort ist - ich kann keine Wurzel ziehen. Nehm ich lieber Atan2 aber gibts auch Wurzel zieh function in BB3D?
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Jul 03, 2005 20:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
ich kann keine Wurzel ziehen

mit SQR()
geht das ganz gut
[BB2D | BB3D | BB+]

Lunatix

BeitragMo, Jul 04, 2005 8:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh. Nocj n Befehl übersehen. THX Leute!
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Egon Dragon

BeitragMo, Jul 04, 2005 9:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Also wenn ich das jetzt richtig verstanden habe dann willst du nur in 90° grad winkeln schießen oder nicht?
naja wenn das so ist braucht man doch keine winkelfunctionon und sonstwas sondern einfach nur eine variable und ein typ für die kugel.

wenn die kugel geschoßen wird, bekommt der typ der kugel einen wert von null bis drei. dann mußt du einfach in immer diese variable abfragen, am besten mit select case also so:

BlitzBasic: [AUSKLAPPEN]

Select BulletRichtung
Case 0
y=y-BulletSpeed
Case 1
x=x+BulletSpeed
Case 2
y=y+BulletSpeed
Case 3
x=x-BulletSpeed
End Select

Lunatix

BeitragMo, Jul 04, 2005 11:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Geht nicht. Weil ich ein Fadenkreuz habe, dort dran ist eine linie bis zum lauf der waffe. Also mit befel->BlitzBasic: [AUSKLAPPEN]
Line(PlayerX,PlayerY,MouseX(),MouseY())


somit muss der schuss auf der X und Y achse immer von Wert 0.0 bis wert 1.0 eingestellt werden -> 45° = X=X+0.45 Y=Y+0.45
Damit der schuss nie schneller als 1 ist.
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

hitokiri

BeitragMo, Jul 04, 2005 12:23
Antworten mit Zitat
Benutzer-Profile anzeigen
erm, line ist dreckigst lahm.
mit atan2 kriegst du doch den winkel. dann schreibst du dir einfah eine "rund" routine die es auf die nächsten 45 oder 90 grad rundet.

winkel = atan2(y2-y1,x2-x1)
ratio=(x2-x1)/(y2-y1)
i=(x2-x1)

lockbuffer frontbuffer()
for blubb = 0 to i
writepixelfast x2+i,y2+i*ratio,farbe
next


und so weiter

D2006

Administrator

BeitragMo, Jul 04, 2005 12:28
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn du den Buffer lockst, ist Line auch sehr schnell.

MfG
D2006

Lunatix

BeitragMo, Jul 04, 2005 12:29
Antworten mit Zitat
Benutzer-Profile anzeigen
also bei mir keine probleme. was ist eigendlich schneller - ein plot oder ein rect 1*1 groß??

kann lockbuffer zu irgendwelchen problemen führen? hätte mein game gerne ohne jedes prob gemacht
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

hitokiri

BeitragMo, Jul 04, 2005 12:33
Antworten mit Zitat
Benutzer-Profile anzeigen
rect ist amüsanterweise schneller als plot genauso wie rect für eine gerade linie schneller ist als line.
lockbuffer kann zu problemen führen wenn du beschissenen code hast Smile
ernsthaft, so lange du im code aufpasst, dass du nicht über den bildschirmrand rauswritepixelst und deinen buffer wieder unlockest wenn du fertig bist gibst da absolut keine probleme.

Lunatix

BeitragMo, Jul 04, 2005 12:41
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, mal sehen, aber rect kann man nich t als schräge line nehem ausse man macht es sehr aufwändig mit types und so, aber glaube dann ist line wider schneller
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

hitokiri

BeitragMo, Jul 04, 2005 13:05
Antworten mit Zitat
Benutzer-Profile anzeigen
deswegen writepixelfast. laut aussagen von leuten gut 20x so schnell wie line

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group