Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Toa

Alter Hase

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

11

18.11.2008, 18:02

Zitat von »"David Scherfgen"«

Also erstmal, was ist eigentlich, wenn x == 0 oder y == 0?
Davon abgesehen:

C-/C++-Quelltext

1
2
3
4
int f(int x, int y)
{
    return x > 0 ? (y > 0 ? 1 : 4) : (y > 0 ? 2 : 3);
}


ternäre Operatoren ftw XD

David_pb

Community-Fossil

  • »David_pb« ist der Autor dieses Themas

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

12

18.11.2008, 18:11

Zitat von »"Chase"«

C-/C++-Quelltext

1
2
3
4
int f(int x,int y)
{
    return (((y < 0) << 1) | ((x<0) != (y<0)))+1;
}
:p


Jo, oder mit xor:

C-/C++-Quelltext

1
2
3
4
int f(int x,int y)
{
    return (((y < 0) << 1) | ((x<0) ^ (y<0)))+1; 
}


:p

Edit:
Oder man maskiert den Dreher nochmal anders weg (hauptsache der Code is nich mehr zu verstehen ;)):

C-/C++-Quelltext

1
return ((((( y > 0 ) << 1 ) | ( x > 0 )) ^ (((((( y > 0 ) << 1 ) | ( x > 0 )) >> 1 ) & 1) ^ 1 )) ^ 3 ) + 1;


:!:
@D13_Dreinig

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

13

19.11.2008, 07:12

C-/C++-Quelltext

1
2
3
4
int f( int x, int y )
{
  return rand()%4+1;
}


Man kann nicht erwarten, dass jede Funktion immer perfekt funktioniert. Der Aufwand sollte sich da im Rahmen halten. :lol:

Sorry, aber die guten Lösungen sind ja schon weg.. :)

14

19.11.2008, 11:10

Ich habe mal ein Tutorial auf developia.de verfasst, Sortieren in C++ für Fortgeschrittene. Es ging dabei exemplarisch um das Sortieren von Punkten in 2D nach dem Winkel, also fuer reelle Sachen. Quadranten spielten dabei auch eine Rolle. Im Tutorial selbst ist nur die langsame Variante mittels atan2 gezeigt, im Quelltext stehen aber auch optimierte Varianten mittels Skalarprodukt. Spezialfaelle sind ebenfalls behandelt, kann ja nicht sein, dass ein Punkt in keinem Quadranten liegt.

15

19.11.2008, 13:32

C-/C++-Quelltext

1
2
3
int f(int x, int y) {
    return (-2 * atan(x / y) / M_PI + (y < 0 ? 7 : 5))%4 + 1;
}


nicht schön, aber einzeilig :)

Werbeanzeige