Problem: Ursprungsfråga Det jag gillar med ditt inlägg, Sven, är att det innehåller Ang a b c och A B C så har jag samma uppfattning, kanske snurrade till det med BC Så här simpelt blev det, jmf. mattesnillenas utläggningar med cos teorem mm. Problemet var att triangelns ena ben har varierande längd. I <b>utgångsläget</b> är den dock rätvinklig, varvid ju benet benämns katet (och ju naturligvis har en fast längd i detta utgångsläge). mmm Så har jag också uppfattat det och att triangeln var rättvinklig när vinkeln var 15. Precis. Jag vet inte utgångsvinkeln just nu, har inte parameterlistan för maskinen här. (Parametrarna är hypotenusan och den ena kateten, vinkeln har jag faktiskt inte räknat ut.) En bra länk för intresserade.Ang Skrivklåda"Lite Trigometri" Niklas mfl
<b>Givet:
En rätvinlig triangel. Hypotenusan och en katet har fast längd.
Vinkeln mellan hypotenusan och denna katet varierar +- 15 grader.
(Naturligvis är då inte triangeln rätvinklig längre, det är den bara i utgångsläget).
Sökes:
Ett uttryck för längden av den andra kateten (eller benet blir det ju) när vinkeln ändras. </b>
Onödig info:Om Hypotenusan har fast längd och vinkeln skall vara 15 gr så måste
den långa kateten också vara fast.
Som Scenario: har jag satt Hypotenusan till 20 vinkeln till 15 (fasta värde )
Ändrar vinkeln till 10 (Ny vinkel) och får svar 3.493434798
Räknar min funktion rätt ???
<code>
Option Explicit
'Tre textboxar: startvinkel , ny vinkel , hypotenusa
' sAngle nAngle hypo
Private Sub Command1_Click()
Dim arg1 As Double
Dim arg2 As Double
Dim arg3 As Double
Dim retValue As Double
'Obs punkt (.) som decimalavskiljare
arg1 = DegToRad(Val(Text1.Text))
arg2 = DegToRad(Val(Text2.Text))
arg3 = Val(Text3.Text) 'hypotenusa
retValue = NewLeg(arg1, arg2, arg3)
MsgBox retValue
End Sub
Private Function NewLeg(ByVal sAngle As Double, _
ByVal nAngle As Double, _
ByVal hypo As Double) As Double
Dim BC As Double 'jag kallar hypotenusan c
Dim nAC As Double
'steg 1 ta reda på katet BC din fasta katet
'Dvs du kan hoppa över detta steg,ersätta med Constant
BC = Cos(sAngle) * hypo
'steg 2 ta reda på katet nya nAC
nAC = hypo - Cos(nAngle) * BC
'steg 3 ta reda på sökta katet
NewLeg = Sqr((Sin(nAngle) * BC) ^ 2 + nAC ^ 2)
End Function
Function DegToRad(ByVal Degree As Single) As Single
DegToRad = Degree * 0.0174533 '3.141593 / 180
End Function
</code>Sv: Ang Skrivklåda"Lite Trigometri" Niklas mfl
dessa generella beräkningsformuleringarna för sidor,
vinklar och liknande i en triangel + hur man formellt
skriver Pythagoras sats i VB.
Om det ska petas lite, för det måste man väl, när
det inte är en själv som kommit med lösningen? :-)
...så betecknar man väl kateterna "a" och "b"
och hypotenusan med "c". (små bokstäver)
De motstående vinklarna blir då motsvarande
"A" och "B" och den räta brukar heta "C". (stora bokstäver)
Lägg gärna upp dessa formlerna i Tips/Tricks så har vi
lättare att hitta dom, för dessa lär vi nog behöva
återkomma till om/när man ska koda grafik, t ex.
Som sagt, tack för formlerna och förlåt "pekpinnarna". :-)
ChristerGbgSv:Ang Skrivklåda"Lite Trigometri" Niklas mfl
Sv: Ang Skrivklåda"Lite Trigometri" Niklas mfl
<code>
Option Explicit
Const HYPO = 20 'Den fasta kända hypotunusan
Const DEG = 15 'Den kända startvinken
Const LKATET = 19.31851 'Den kända långa kateten
Private Sub Command1_Click()
Dim newAngle As Double
Dim retValue As Double
'Obs punkt (.) som decimalavskiljare
newAngle = DegToRad(Val(Text1.Text)) 'nya vinkeln
retValue = NewLeg(newAngle)
MsgBox retValue
End Sub
Private Function NewLeg(ByVal nAngle As Double) As Double
Dim newAB As Double
'steg 1 ta reda på katet nya AB
newAB = HYPO - Cos(nAngle) * LKATET
'steg 2 ta reda på sökta benet
newLeg = Sqr((Sin(nAngle) * LKATET) ^ 2 + newAB ^ 2)
End Function
Function DegToRad(ByVal Degree As Single) As Single
DegToRad = Degree * 0.0174533 '3.141593 / 180
End Function
</code>Sv: Ang Skrivklåda"Lite Trigometri" Niklas mfl
Vinkeln mellan de två fasta benen är inte 15 grader, om du läser noga, utan <b>varierar</b> +-15 grader, dvs så snart den avviker från utgångsläget är inte trianglen rätvinklig längre.
Utgångsvinkeln är dock sådan att det är den långa kateten (samt hypotenusan) som är fast. Det är alltså denna vinkel som varierar.
För övrigt så löste Pers uttryck problemet utmärkt i båda riktningarna, maskinen är redan i drift.Sv:Ang Skrivklåda"Lite Trigometri" Niklas mfl
Tack för ditt problem som fick mig att "refresha" min trignometriådra.
Om jag då ändrar vinkeln till tex 10 med en fast hypotenusa på 20
så blir som exempel det sökta benet 3.493434798. Är detta exempel Fel ???
Eller om du vill ge mig ett exempel på en fast Hypotenusa som du kan svaret på
så skall jag svara vad min algoritm lämnar för svar på det nya benet.
<b>Edit:Ahaaa tror jag förstår .Mitt antagande att den var rättvinklig vid 15 gr är felaktigt ?</b>Sv: Ang Skrivklåda"Lite Trigometri" Niklas mfl
Sv:Ang Skrivklåda"Lite Trigometri" Niklas mfl
http://matmin.kevius.com/trigonometri.html