Forum: PC-Programmierung c# liniengrösse


von Rebi (Gast)


Lesenswert?

Hallo zusammen. Gibt es eine Möglichkeit die Grösse der folgenden Linie 
herauszufinden?
1
g.DrawLine(Strom, dia_abstand + Convert.ToInt16(IR3 * 1000 * xc * xc / Widerstand / Widerstand- 2 * IR3 * 1000), dia_hoehe - Convert.ToInt16(4 * IR3 * 1000 * xc / Widerstand), dia_abstand, dia_hoehe);//IC1

von Peter II (Gast)


Lesenswert?

was ist bei dir die liniengrösse? breite, länge, höhe?

von Rebi (Gast)


Lesenswert?

Peter II schrieb:
> was ist bei dir die liniengrösse? breite, länge, höhe?

Ich möchte gerne die Länge der Linie.

Also z.B. bei
1
g.DrawLine(Spannung,0, 0,100, 100);

möchte ich 100*Wurzel(2)

von Peter II (Gast)


Lesenswert?

Rebi schrieb:
> Ich möchte gerne die Länge der Linie.
>
> Also z.B. beig.DrawLine(Spannung,0, 0,100, 100);
>
> möchte ich 100*Wurzel(2)

und wo ist das Problem, wenn du die gleiche Formel mit deinen Werten 
oben berechnest?

von Rebi (Gast)


Lesenswert?

Peter II schrieb:
> und wo ist das Problem, wenn du die gleiche Formel mit deinen Werten
> oben berechnest?

Beim Beispiel waren die gelichen Längen da ist es einfacher. Mit 
unterschiedlichen Längen würde die Formel nur kompliziert werden.
Gibt es keine einfachere Lösung?

Ich dachte an etwas wie:
1
double Linengroesse:
2
3
Linengroesse = g.DrawLine(Spannung,0, 0,100, 100);

von Peter II (Gast)


Lesenswert?

Rebi schrieb:
> Beim Beispiel waren die gelichen Längen da ist es einfacher. Mit
> unterschiedlichen Längen würde die Formel nur kompliziert werden.
> Gibt es keine einfachere Lösung?

keine Angst der Computer schafft es schon auszurechnen.


l = sqrt( (x1-x2)² + (y1-y2)² );

: Bearbeitet durch User
von Rebi (Gast)


Lesenswert?

Peter II schrieb:
> l = sqrt( (x1-x2)² + (y1-y2)² );

Danke. Hab wohl zuwenig nachgedacht.

Trodzdem schade das es keine Funktion für die ermittlung der 
Liniengrösse gibt.

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

Rebi schrieb:
> Trodzdem schade das es keine Funktion für die ermittlung der
> Liniengrösse gibt.

dann schreibe doch die Formel in ein Funktion.

Es gibt auch keine Funktion um 2 werte zu addieren.

von Halblanger (Gast)


Lesenswert?

Math.Sqrt(Math.Pow(x1 - x2, 2) + Math.Pow(y1 - y2, 2))

oder etwas wie
1
public static class MathEx
2
{
3
  public static double Distance(double x1, double y1, double x2, double y2)
4
  {
5
    var a = x1 - x2;
6
    var b = y1 - y2;
7
8
    return Math.Sqrt(a * a + b * b);
9
  }
10
}

Man könnte auch eine Erweiterungsmethode für 'Point' schreiben (oder 
gleich eine 2D-Vektorklasse verwenden, damit das Ganze nicht an 
System.Drawing hängt).

von Rebi (Gast)


Lesenswert?

Peter II schrieb:
> dann schreibe doch die Formel in ein Funktion.
>
> Es gibt auch keine Funktion um 2 werte zu addieren.

Gute Idee, werde ich machen.

Danke für deine Hilfe. :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.