Eine Art erweiterter 3-Satz?

Neue Frage »

PhilDerGast Auf diesen Beitrag antworten »
Eine Art erweiterter 3-Satz?
Meine Frage:
Moin,
ich beiße mir gerade etwas am Folgendem die Zähne aus:

6000 sind 132.
9000 sind 230.

Wie viel sind 2158?


Meine Ideen:
Keine. Meine Schulzeit ist ewig her. Augenzwinkern
klauss Auf diesen Beitrag antworten »
RE: Eine Art erweiterter 3-Satz?
Mit den zwei Wertepaare könnte man eine Geradengleichung aufstellen und damit den gesuchten Wert berechnen.
Es handelt sich aber dann nicht um eine proportionale Beziehung und für 2158 kommt auch keine ganze Zahl raus.
Wüßte man mehr über die Herkunft dieser Zahlen, könnte man bestimmt auch einen anderen Ansatz entwickeln.
PhilDerGast Auf diesen Beitrag antworten »

Ich programmiere einen Drehzahlmesser als HUD für ein Spiel. Wenn der Winkel der Nadel 132° beträgt, stehts sie exakt bei 6000 Umdrehungen, und bei einem Winkel von 230° bei 9000 Umdrehungen.

Input sind sie die Umdrehungen und nun muss ich irgendwie die Winkel berechnen. Als ich noch statt 6000 0 hatte, reichte ein einfacher Dreisatz + Winkel-Offset. Das setzte voraus, daß man den Winkel von 0 U/min kennt und somit 0 auch auf dem Drehzahlmesser angezeigt wird. Wenn man nur einen halben Drehzahlmesser haben möchte, dann kann man ihn nicht einstellen. Deswegen das Beispiel mit 6000 und 9000 Umdrehungen. Die 2158 ist auch nur ein Beispiel.

Daß da Ergebnisse mit Nachkommastellen herauskommen, macht nichts, ich runde es eh auf.
klauss Auf diesen Beitrag antworten »

Mit so einem handfesten Projekt wirds natürlich schwierig, eine Aussage zu machen. Wenn man selbst ein Ziel visuell vor Augen hat, kann man sich eher vorstellen, an welchen Stellschrauben noch gedreht werden könnte, um es dem Bedarf anzupassen.
Die Beziehung Winkel-Drehzahl soll offenbar nicht linear sein. Andererseits muß ja ein Drehzahlmesser vielleicht auch nicht in allen Bereichen gleichabständig skaliert sein. Im hohen, selteneren "roten" Drehzahlbereich genügt vielleicht eine gröbere Einteilung.
Aber welchen "gekrümmten" funktionalen Zusammenhang soll man zugrundelegen?
Da wäre nun am besten ein Ingenieur für Fahrzeugtechnik gefragt, wie sowas in der Praxis umgesetzt wird.
URL Auf diesen Beitrag antworten »

Der Vollständigkeit halber noch die von Klauss angedeutete Formel für den Winkel in Abhängigkeit von der Drehzahl
PhilDerGast Auf diesen Beitrag antworten »

@klauss:
Naja, mit 0 und 9000 hat es ja mit einem Dreisatz funktioniert. Da muss es doch was geben, mit dem ich 6000 und 9000 die Winkel berechnen kann.

code:
1:
2:
3:
4:
5:
6:
7:
8:
// calculationAngle wäre im angeführten Beispiel 230°
// minAngle ist das Offset, der Winkel bei 0 U/min
// calculationValue wären hier 9000
// gaugeInput sind die aktuellen Umdrehungen, z.B. 2158
// Das ganze wird dann noch mit Math.Round auf 0 Nachkommastellen gerundet

int angle = (int)Math.Round((((this.calculationAngle - this.minAngle) / this.calculationValue) * this.gaugeInput) + minAngle, 0);

Wenn ich hiermit statt 9000 z.B. 7000 nehme + richtigen Winkel, dann werden 9000 trotzdem richtig berechnet und angezeigt.

Den oberen Kalkulationspunkt kann ich also frei wählen. Der Untere ist mit dieser Formel fix und muss immer auf die 0 zeigen. Jetzt möchte ich auch den Unteren freiwählen können. Das wird doch zu machen sein.

@URL
Danke für die Formel, aber ich verstehe sie nicht. Was sind die 49, 1500 und 64?
 
 
PhilDerGast Auf diesen Beitrag antworten »

Ok, ich habs. Big Laugh Manchmal muss man einfach nur mal eine Nacht drüber schlafen.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
// Winkel pro 1 U/min
double rpmAngle = (this.calculationAngle - this.minAngle) / (this.calculationValue - this.minValue);

// Winkel bei 0 U/min
double offsetAngle = this.minAngle - (rpmAngle * this.minValue);

// Winkel bei aktueller U/min
int angle = (int)Math.Round((rpmAngle * this.gaugeInput) + offsetAngle, 0);


Funktioniert wunderbar! smile
URL Auf diesen Beitrag antworten »

Bei Drehzahl soll der Winkel anliegen, bei der Winkel . Durch die beiden Punkte und der Ebene kann man eine Gerade legen. Auf dieser Geraden gilt dann für den Winkel in Abhängigkeit von der Drehzahl die Gleichung .
Setzt man darin deine Werte ein, kommt man auf
klauss Auf diesen Beitrag antworten »

Habe nun versucht, Deinen Code mit den vermutlichen Werten zu füllen.
Meine Annahmen:

this.calculationAngle = 230
this.minAngle = 132
this.calculationValue = 9000
this.minValue = 6000
rpmAngle =

offsetAngle =

angle =

Das wäre also die von mir angedeutete und von URL publizierte Geradengleichung.

Ansonsten sieht es so aus, als wolltest Du jedenfalls der Winkelentwicklung zwischen 0 U/min und 9000 U/min einen linearen Verlauf zuweisen. Da eine Gerade durch 2 Punkte eindeutig beschrieben ist, kommt es eben darauf an, ob Du (0 U/min | 0°) als Stützpunkt wählst, dann bekommst Du eine Ursprungsgerade. Nimmst Du neben der Obergrenze stattdessen einen anderen Bezugspunkt, der sich nicht proportional verhält, kommt der Offset ins Spiel.
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »