KarlPichler
Mitglied
Hallo liebes Forum,
Habe eine Frage zu DrawArc:
Programm Erklärung:
Der User hat zwei Buttons zur Auswahl: STRAIGHT od. CURVE.
Es muss immer eine Straight auf eine Kurve folgen (dann wieder Kurve und wieder Straight, etc .. )
Die Straight muss immer der Kurve folgen, sprich im selben Winkel weiter gezeichnet werden!
Ich habe nun ein FrameBegin Array und FramEnd Array, wo ich immer die Anfangswerte und die Endwerte eines Teilstückes abspeichere.
Mit diesen beiden Arrays möchte ich danach die Gesamte Bahn zeichnen!
Diese Punkte sind mit den färbigen Kreuzen gekennzeichnet.
Das funktioniert auch soweit gut! Allerdings weis ich nicht wirklich wie ich nun die Kurve zeichen muss, bzw. auf die Werte komme die ich für den DrawArc Befehl brauche.

Also ich möchte den Punkt "Pinkes Kreuz" mit dem Punkt "blaues Kreuz" mit einem DrawArc (od. vl. mit einem anderen) verbinden!
Ich hoffe das Bild hilt euch weiter.
Nun folgt der Code wie ich die Koordinaten berechne:
Bitte helft mir, i versuche es schon ziemlich lange, aber ich komme nicht drauf!
Lg
Habe eine Frage zu DrawArc:
Programm Erklärung:
Der User hat zwei Buttons zur Auswahl: STRAIGHT od. CURVE.
Es muss immer eine Straight auf eine Kurve folgen (dann wieder Kurve und wieder Straight, etc .. )
Die Straight muss immer der Kurve folgen, sprich im selben Winkel weiter gezeichnet werden!
Ich habe nun ein FrameBegin Array und FramEnd Array, wo ich immer die Anfangswerte und die Endwerte eines Teilstückes abspeichere.
Mit diesen beiden Arrays möchte ich danach die Gesamte Bahn zeichnen!
Diese Punkte sind mit den färbigen Kreuzen gekennzeichnet.
Das funktioniert auch soweit gut! Allerdings weis ich nicht wirklich wie ich nun die Kurve zeichen muss, bzw. auf die Werte komme die ich für den DrawArc Befehl brauche.

Also ich möchte den Punkt "Pinkes Kreuz" mit dem Punkt "blaues Kreuz" mit einem DrawArc (od. vl. mit einem anderen) verbinden!
Ich hoffe das Bild hilt euch weiter.
Nun folgt der Code wie ich die Koordinaten berechne:
Code:
public void GetNewFrameStraight(int index, FrameXYA[] frames, int origin, int length)
{
if (index == 0)
{
frames[index].XStart = 0;
frames[index].YStart = 0;
frames[index].AngleStart = alpha;
}
if (index > 0)
{
frames[index].XStart = frames[index - 1].XEnd;
frames[index].YStart = frames[index - 1].YEnd;
frames[index].AngleStart = frames[index - 1].AngleEnd;
}
frames[index].XEnd = frames[index].XStart + (float) Math.Cos(frames[index].AngleStart * Math.PI / 180.0) * length;
frames[index].YEnd = frames[index].YStart + (float) Math.Sin(frames[index].AngleStart * Math.PI / 180.0) * length;
frames[index].AngleEnd = frames[index].AngleStart;
frames[index].Typ = 0;
frames[index].Id = (float)index;
}
public void GetNewFrameCurve(int index, FrameXYA[] frames, int radius, int angle)
{
Vector3 v1 = new Vector3();
if (index > 0)
{
frames[index].XStart = frames[index - 1].XEnd;
frames[index].YStart = frames[index - 1].YEnd;
frames[index].AngleStart = frames[index - 1].AngleEnd;
}
if (angle >= 0.0)
{
v1.X = (float)Math.Sin(angle * Math.PI / 180.0) * radius;
v1.Y = (float)-(1.0 - Math.Cos(angle * Math.PI / 180.0)) * radius;
}
else
{
v1.X = (float)-Math.Sin(angle * Math.PI / 180.0) * radius;
v1.Y = (float)(1.0 - Math.Cos(angle * Math.PI / 180.0)) * radius;
}
frames[index].XEnd = ((frames[index].XStart + (float)(v1.X * Math.Cos(frames[index].AngleStart * Math.PI / 180.0) - v1.Y * (float)Math.Sin(frames[index].AngleStart * (float)Math.PI / 180.0))));
frames[index].YEnd = ((frames[index].YStart + (float)(v1.X * Math.Sin(frames[index].AngleStart * Math.PI / 180.0) + v1.Y * (float)Math.Cos(frames[index].AngleStart * (float)Math.PI / 180.0))));
frames[index].AngleEnd = (frames[index].AngleStart- angle);
frames[index].Typ = 1;
frames[index].Id = (float)index;
}
Bitte helft mir, i versuche es schon ziemlich lange, aber ich komme nicht drauf!
Lg