g0t v0rschlag? [php]
Phobos 01.03.2003 - 23:25 570 13
Phobos
✝
|
Ich wollte mir (da wir das gerade in mathe machen ![;)](/images/smilies/wink.gif) ) einen Trigonometrie rechner basteln. Für das allgemeine dreieck (sin- / cossatz) Ich hab mir das durchdacht, würde alles mit den mathematik funktionen die php hat funktionieren. Allerdings bleibt noch ein dummes problem gelich am anfang: und zwar die angabe. grundsätzlich braucht man für trigonometrie im allgemeinen dreieck 6 dinge: seite a, b, c winkel alpha, beta und gamma. so jetzt sind die angaben meistens so das ich nur 3 werte gegeben hab: zb a, b, alpha oder b, beta, gamma usw... und jeh nach dem welche werte gegeben sind,gibt es einen anderen rechengang. es gäbe also im ersten formular 6 felder, und jeh nach dem welche ausgefüllt werden , würde "eine" if, else abfrage den rechengang festlegen. nun das ergeben dann ca 20 abfragen und das is ma zu viel ![:p](/images/smilies/tongue.gif) eine andere möglichkeit wäre am anfang anzugeben welche werte man gegeben hat (in form von radio buttons zb) allerdings sehr benutzerunfreundlich ![:D](/images/smilies/biggrin.gif) was gäbe es da für eine möglichkeit? thx 4 hlp ![:cool:](/images/smilies/cool.gif) pHs
|
alexsb
hmm
|
du schreibst einfach die Berechnungen für Seite, Seite, Seite; Seite, Winkel, Seite ; Seite, Winkel, Winkel ; Winkel, Winkel Winkel, und machst davor eine auswahl (vor jedem Element) Aber für was brauchst sowas in PHP?
|
Phobos
✝
|
4 phun ![;)](/images/smilies/wink.gif) jo des is ma auch scho durch den kopf gangen aber sin / cos satz sind je nach angabe verschieden. auserdem kannst ein dreieck net mit 3 winkeln berechnen
|
alexsb
hmm
|
macht ja nix, musst halt entweder automatisch erkennen mit welchen angaben er welchen Satz verwenden soll, oder das ist ein weiterer Parameter
|
alexsb
hmm
|
Neue Idee: Du machst 6 Felder, der User füllt alle ein die er weiss und vom Proggie werden dann alle anderen dazugegeben. Is schon recht aufwendig aber möglich.
|
Phobos
✝
|
jo, thx aber wie mach ich das ![:D](/images/smilies/biggrin.gif) wenn ich des in einer if else abfrage macht is der code so umfangreich das ich alle beispiele die ich jehmals mit dem programm rechnen werd auch mit der hand rechenen könnt
|
atrox
in fairy dust... I trust!
|
hmm.. vielleicht läßt sich das in einer schleife lösen, wenn du die beziehungen zwischen den werten im dreieck auf kleinste einheiten herunterbrichst.. etwa so: für die winkel alpha, beta und gamma und die seiten a,b und c legst du ein array (winkel[0..2], seite[0..2]) an, und führst nacheinander folgende einfachstbeziehungen im dreieck durch, solange bis alle 6 felder gefüllt wurden, oder in ein (äußerer) schleifendurchlauf keine neuen felder gefüllt werden konnten: a/sin(al)=b/sin(be)=c/sin(ga) a/b=sin(al)/sin(be); (für alle seiten) al+be+ga=180 usw.. für den ersten sinussatz heißt das zb: du suchst nach einem vollständigen seiten/winkel paar und kannst dann zu jedem unvollständigen seiten/winkel paar den jeweils anderen wert berechnen. beispiel: zb so: $toterdurchlauf=0;
while (!$toterdurchlauf || !(alle felder gefüllt)) {
$toterdurchlauf=1;
// 1 sinussatz:
// finde umkreisdurchmesser //ukd=2R:
$ukd=0;
for ($i=0;$i++;$i<3)
if (isset($winkel[i])&&isset($seite[i])) {
$ukd=$seite[i]/sin($winkel[i]);
break;
}
if ($ukd) {
for ($i=0;$i++;$i<3) {
if (isset($winkel[i]&& !isset($seite[i]) { // seite fehlt
$seite[i]=$ukd*sin($winkel[i]);
$toterdurchlauf=0; // wichtig !
}
if (!isset($winkel[i]&& isset($seite[i]) { // winkel fehlt
$winkel[i]=arcsin($seite[i]/$ukd);
$toterdurchlauf=0; // wichtig !
}
}
}
// 2 sinunssatz:
.. usw...
// cosinussatz:
...
// winkelsatz:
...
}
Bearbeitet von atrox am 02.03.2003, 15:53
|
atrox
in fairy dust... I trust!
|
@Phobos: nächstes mal bitte einen sprechenderen threadtitle
|
Phobos
✝
|
bitte vielmals um verzeihung her forumgott
|
watchout
Legendundead
|
so wie ich das sehe gibts eh nur folgende möglichkeiten der angabe: drei seiten zwei seiten mit eingeschlossenem winkel zwei seiten mit winkel ausserhalb eine seite mit beiden winkeln an den enden eine seite mit einem winkel an einem ende und 2. gegenüber vielleicht kann man's auch noch weiter reduzieren - is gut möglich
|
Phobos
✝
|
nein das sind alle möglichkeiten.
allerdings sind die formeln jedes mal anders.
|
watchout
Legendundead
|
nein das sind alle möglichkeiten.
allerdings sind die formeln jedes mal anders. naja, 5 formeln sind ja nicht die welt...
|
Phobos
✝
|
nicht zu vergessen sie das ich gerne hätte das er winkel alpha , beta und gamma ausgibt und net "seite 1" und "winkel gegenüber seite 1" usw... das hab ich schon auf meinem taschenrechner programmiert, nur ich arbeite daran das der rechengang auch ausgegeben wird
|
Sticker
Big d00d
|
kein tangens? @ Thread erstmal checken, wenn 3 Winkel gegeben sind und keine Seite dann gehts nicht...also, echo "berechnung nicht möglich"; dann checken was du hast und was du brauchst. if (!empty(bla)&&!empty(blubb)&&empty(bla)) { bla } Und das mit allen möglichkeiten... Rechengang? Sollte nicht so schwer sein, musst einfach nur in den if Anweisungen das wast rechnest noch echon
|