zufaelligen punkt auf einen pfad generieren



  • Hi,

    ich habe ein 2d space (mit HEIGHT, WIDTH) in dem sich ein object bewegt. von dem objekt kenne ich start_x, start_y und die richtung in welche sich das object bewegt. das objekt bewegt sich auf einer linie...

    wie kann ich einen zufaelligen punkt (x,y) generieren, welcher sich auf den pfad sich befindet? ziel ist es eine zuefaellige bewegungsaenderung des objektes durchzufuehren...

    also sowas wie:

    std::pair<int,int> generateRandPointOnPath(unsigned int start_x, unsigned int start_y, unsigned int heading_dir_degrees, unsigned int WIDTH, unsigned int HEIGHT) {
    }
    

    LG Steffen


  • Mod

    zufälliger punkt = startpunkt + zufallszahl * richtungsvektor

    ziel ist es eine zuefaellige bewegungsaenderung des objektes durchzufuehren...

    Häh? Erklär mal genauer. Ich kann diesen Satz nicht in Einklang mit deiner sonstigen Beschreibung bringen.



  • SeppJ schrieb:

    zufälliger punkt = startpunkt + zufallszahl * richtungsvektor

    ziel ist es eine zuefaellige bewegungsaenderung des objektes durchzufuehren...

    Häh? Erklär mal genauer. Ich kann diesen Satz nicht in Einklang mit deiner sonstigen Beschreibung bringen.

    ich will einen zufaelligen punkt auf den pfad generieren. wenn das object diesen punkt uberschreitet dann soll soll sich die bewegungsrichtung des objektes aendern.

    beispiel:

    unsinged int HEIGHT = 1024;
    unsinged int WIDTH = 768;
    unsigned int start_x = 100;
    unsigned int start_y = 100; 
    unsigned int heading_dir = 45; // grad
    
    // da nehmen wir wohl ein std::pair...
    unsigned int rand_x, rand_y = generateRandPointOnPath(start_x, start_y, heading_dir, WIDTH, HEIGHT);
    
    // was passiert wenn curr_x and curr_y floats sind?
    if (curr_x == rand_x && curr_y == rand_y) {
       heading_dir = 90;
    }
    


  • verstehst du es nun? wie kann ich nun generateRandPointOnPath implementieren?


  • Mod

    Meine erste Antwort war in dem Fall schon passend, daher habe ich nichts mehr hinzu gefügt.



  • @SeppJ: kannst du bitte erklaeren wie ich das auf meine funktion generateRandPointOnPath(start_x, start_y, heading_dir, WIDTH, HEIGHT) mappen kann?


  • Mod

    Ich fühle mich nur gering motiviert, deine Programme für dich zu schreiben, wenn du dazu schon keinen Ansporn hast.



  • @SeppJ: hab schon was begonnen: http://ideone.com/IqLsCP ... damit kann ich den sehen wo das objekt das koordinaten system verlaesst und definiere mein end_x, end_y...

    funktioniert im moment nur fuer einen winkel bis 90 grad.
    wie kann ich den code vereinfachen?


  • Mod

    Steigungen sind doof. Du willst schließlich Geometrie machen, keine Analysis. Ich habe nicht umsonst von Richtungsvektoren geredet.



  • SeppJ: hab nun den code umgebaut. was meinst du dazu? http://ideone.com/btgKmD


  • Mod

    steffenn schrieb:

    SeppJ: hab nun den code umgebaut. was meinst du dazu? http://ideone.com/btgKmD

    Was hältst du von der Tatsache, dass er nicht das macht, was du willst?

    Ich weiß nicht, was du hier willst. Du hast eine einfache, exakte Antwort bekommen, die auch funktionieren würde. Aber stattdessen willst du Feedback zu Implementierungen deiner eigenen Ideen, die nicht einmal im Ansatz richtig sind, und zu denen du dir nicht einmal 5 Sekunden Zeit genommen hast, diese selber zu testen.



  • @SeppJ: ich habe nun noch die change_heading_dir funktion hinzugefuegt...
    http://ideone.com/btgKmD

    warum?



  • @SeppJ:
    ich habe noch mal genau ueberlegt und bin auf folgendes gekommen: http://ideone.com/CtXMy6 ... kannst du mir bitte nun ein feedback geben? ich muss alle cases noch implementieren und testcases hinzufuegen...


Anmelden zum Antworten