L
Lodrik
Gast
Mahlzeit!
Ich habe mal wieder ein kleines Problem und ich hoffe ihr könnt mir helfen.
Es geht darum, dass wir einen Jahreskreis haben (beginnend bei 12 Uhr) und darin "Termine" zeichnen sollen, der Benutzer soll Start- und Enddatum eingeben und anhand dieser 2 Werte soll der Termin dann im Kreis gezeichnet werden.
Das Zeichnen funktioniert super nur ich habe ein Problem festzustellen, ob der Mausklick auf so einem "Termin" ausgeführt wurde.
Hier der Code für die Berechnungen:
Da wir bei 12 Uhr mit Jänner anfangen müssen, spiegel ich den Winkel und zähl danach 90° dazu damit wir immer bei 12 Uhr anfangen.
Mit diesem Winkel rechne ich mir mit Hilfe von cos und sin die An- bzw. Gegenkathete aus und rechne diese Werte zum Mittelpunkt dazu, damit ich auf den gewünschten Punkt komme.
Jetzt zurück zu meinem Problem, ich möchte jetzt, wenn der Benutzer im Kreis auf einen "Termin" klickt, sich dieser anders einfärbt.
Ich hab mir dazu Folgendes überlegt, ich rechne mir zuerst den Abstand vom Mittelpunkt zum Mauspunkt aus und überprüfe, ob dort rein theoretisch ein "Termin" sein könnte (dass funktioniert auch ganz super) wenn diese Überprüfung, true zurückgibt schaue ich ob der Winkel vom Mauspunkt innerhalb vom Starttag Winkel und Endtag Winkel ist und genau hier hab ich Probleme.
Ich denke durch die Spiegelung und Verschiebung um 90° geht hier etwas schief. Ich hab auch schon versucht anhand des Quadranten die Vorzeichen anzupassen aber es will einfach nicht funktionieren.
Ich hoffe ihr könnt mir dabei helfen.
mfg Lodrik
Ich habe mal wieder ein kleines Problem und ich hoffe ihr könnt mir helfen.
Es geht darum, dass wir einen Jahreskreis haben (beginnend bei 12 Uhr) und darin "Termine" zeichnen sollen, der Benutzer soll Start- und Enddatum eingeben und anhand dieser 2 Werte soll der Termin dann im Kreis gezeichnet werden.
Das Zeichnen funktioniert super nur ich habe ein Problem festzustellen, ob der Mausklick auf so einem "Termin" ausgeführt wurde.
Hier der Code für die Berechnungen:
Java:
private double getAngle(double day)
{
double dayAngle = monthGrad / daysPerMonth * day;
double monthAngle = ((startMonth - 1) * monthGrad) + dayAngle;
return mathsAngle = (-monthAngle + 90) * (Math.PI / 180.0);
}
Da wir bei 12 Uhr mit Jänner anfangen müssen, spiegel ich den Winkel und zähl danach 90° dazu damit wir immer bei 12 Uhr anfangen.
Mit diesem Winkel rechne ich mir mit Hilfe von cos und sin die An- bzw. Gegenkathete aus und rechne diese Werte zum Mittelpunkt dazu, damit ich auf den gewünschten Punkt komme.
Java:
private void calculatePoints()
{
.....
oppositeLeg = radius * -Math.sin(getAngle(day));
adjaentLeg = radius * Math.cos(getAngle(day));
points.add(new Point(center.getX() + adjaentLeg, center.getY() + oppositeLeg));
}
Jetzt zurück zu meinem Problem, ich möchte jetzt, wenn der Benutzer im Kreis auf einen "Termin" klickt, sich dieser anders einfärbt.
Ich hab mir dazu Folgendes überlegt, ich rechne mir zuerst den Abstand vom Mittelpunkt zum Mauspunkt aus und überprüfe, ob dort rein theoretisch ein "Termin" sein könnte (dass funktioniert auch ganz super) wenn diese Überprüfung, true zurückgibt schaue ich ob der Winkel vom Mauspunkt innerhalb vom Starttag Winkel und Endtag Winkel ist und genau hier hab ich Probleme.
Ich denke durch die Spiegelung und Verschiebung um 90° geht hier etwas schief. Ich hab auch schon versucht anhand des Quadranten die Vorzeichen anzupassen aber es will einfach nicht funktionieren.
Ich hoffe ihr könnt mir dabei helfen.
mfg Lodrik