Lovetalk.de

Lovetalk.de (https://www.lovetalk.de/)
-   Lounge (https://www.lovetalk.de/lounge/)
-   -   Die LT Informatiker (https://www.lovetalk.de/lounge/178716-die-lt-informatiker.html)

Sportismylife 29.10.2017 20:59

Die LT Informatiker
 
Hallo!

Da ich immer wieder von Informatikern hier im LT höre - der Thread.

Zum Austausch und Smalltalk etc.

Auch interessierte Nicht-Informatiker sind gerne willkommen.

MfG
Sporty

mzzy 30.10.2017 08:35

Worüber willst du dich denn austauschen?

Sportismylife 30.10.2017 13:33

Ich habe da nicht an etwas spezielles gedacht. Dieser Thread soll einfach für alles was Informatik angeht da sein.

Aber wenn du schon so fragst...

Weißt du zufällig wie ich eine Circle & Circle Kollision realisiere? :)

Sportismylife 30.10.2017 14:14

So Spiele programmieren ist ganz schön arbeit.

mzzy 30.10.2017 14:21

Hab das mal auf die schnelle mit Pythagoras gelöst:

// Kreis 1 an Position x1/y1 mit Radius=r1
double x1 = 2;
double y1 = 2;
double r1 = 1;
boolean kollision = false;

// Annäherung Kreis 2 in 0.1er Schritten:

for (double i = 10; !kollision; i-=0.1 ) {


// Kreis 2 an Position x2/y2 mit Radius=r2
double x2 = i;
double y2 = i;
int r2 = 2;

// c = r1 + r2 + GAP

// Punkt F (xf/yf)
double xf = x2; // = 6
double yf = y1; // = 2

double a = xf - x1;
double b = y2 - yf;

System.out.println("a: " + a);
System.out.println("b: " + b);

// Laut Pythagoras: c^2 = a^2 * b^2

// WENN GAP <= 0 => Kollision

double cq = a * a + b * b;
double c = Math.sqrt(cq);

double GAP = c - r1 - r2;

if (GAP <= 0) {
kollision = true;
System.out.println("\n=> KOLLISION!!!");
} else {
System.out.println("\n=> KEINE KOLLISION!");
}
}

Sportismylife 30.10.2017 14:22

Vorallem die Details.

Ich muss bald Explosionen realisieren.. mach ich da jetzt ne eigene Klasse oder implementier ich das in jeden Gegner :urgs:

Sportismylife 30.10.2017 14:23

Wow danke dir :) vielen Dank! Jetzt kanns ja weiter gehen :fg:

mzzy 30.10.2017 14:24

Hier noch meine Skizze: https://i.imgur.com/pg7x72W.jpg

Sportismylife 30.10.2017 14:29

Danke dir :) gleich erstmal alles gespeichert.

mzzy 30.10.2017 14:35

Geht natürlich viel einfacher, du kannst einfach die Strecke zwischen den Mittelpunkten der Kreise berechnen (Vektor) und der muss größer als die Summe der beiden Radien sein:

// Kreis 1 an Position x1/y1 mit Radius=r1
double x1 = 2;
double y1 = 2;
double r1 = 1;
boolean kollision = false;

for (double i = 10; !kollision; i-=0.1 ) {


// Kreis 2 an Position x2/y2 mit Radius=r2
double x2 = i;
double y2 = i;
int r2 = 2;

double difference = Math.sqrt ((y1 - y2) * (y1 - y2) + (x1 - x2) * (x1 - x2));
double GAP = difference - r1 - r2;

if (GAP <= 0) {
kollision = true;
System.out.println("\n=> KOLLISION!!!");
} else {
System.out.println("\n=> KEINE KOLLISION!");
}
}


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:56 Uhr.

Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Optimisation provided by DragonByte SEO (Lite) - vBulletin Mods & Addons Copyright © 2020 DragonByte Technologies Ltd.