Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Lite trigonometri

Postades av 2005-01-30 10:04:09 - Per-Olof Ohlsson, i forum Skrivklåda, Tråden har 15 Kommentarer och lästs av 1042 personer

Skulle behöva en lösning av följande problem:

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.

Eftersom ena kateten inte ändras i längd blir det ju inte en enkel tangens.

Någon som känner sig sugen ?


Svara

Sv: Lite trigonometri

Postades av 2005-01-30 11:05:03 - Sven Åke Persson

En fräck gissning
6.7 cm 10 gr 10 cm 15 gr
Sökta kateten = sin(nya vinkeln) * gamla kateten / Sin (gamla vinkeln)

När jag testade 15 gr mot en katet på 10 och
därefter minskade vinkeln till 10 gr blev svaret 6.7 tycker jag låter rimligt.


Svara

Sv: Lite trigonometri

Postades av 2005-01-30 12:18:54 - Per Persson

Låt...
* a vara den fixa katetens längd,
* b vara den variabla katetens längd i utgångsläget (dvs när triangeln är rätvinklig)
* c vara hypotenusans längd,
* dt vara vinkelns (den mellan kateten och hypotenusan) avvikelse från utgångsläget

Den variabla katetens längd L ges då av
L = sqrt( a^2 + c^2 - 2 a (a cos dt - b sin dt) )

För små dt (troligen funkar det väl i ditt fall) kan vi göra approximationen
cos dt = 1 - dt^2 / 2
sin dt = dt
där dt är given i radianer

Detta ger
L = sqrt( b^2 + 2 a b dt - a^2 dt^2 )
(dt i <b>radianer</b>)

Med dt i <b>grader</b> får vi
L = sqrt( b^2 + pi a b dt / 90 - (a pi dt / 180)^2 )


Svara

Sv:Lite trigonometri

Postades av 2005-01-30 13:06:17 - Per-Olof Ohlsson

Tackar.
Noggrannhetskraven är ganska stora, jag skall vrida en bearbetningsenhet med en noggrannhet på 1/100 grad genom en linjär förflyttning.

Den fasta kateten är alltså radien på vridrörelsen (ca 1000mm) och det linjära ställdonet är upphängt i hypotenusans ändpunkt, dvs det linära ställdonet är den variabla kateten.

Jag provar detta, skall bli riktigt intressant.


Svara

Sv: Lite trigonometri

Postades av 2005-01-30 13:30:56 - Niklas Jansson

Hur skall det realiseras, räknas det ut med dator?
Om du isf ska ha det noggrannt är det ju bara att strunta i att göra approximationen, bara köra med
L = sqrt( a^2 + c^2 - 2 a (a cos dt - b sin dt) )


Svara

Sv:Lite trigonometri

Postades av 2005-01-30 13:53:51 - Per-Olof Ohlsson

Jovisst. Jag tänkte inte använda approximationen, utan lägga in algoritmen i min reglerrutin som styr positioneringen. Det är en servomotor med tillhörande förstärkare.

Ville bara förklara lite utförligare vad jag skulle ha det till.


Svara

Sv:Lite trigonometri

Postades av 2005-01-30 14:20:28 - Per Persson

Kanske lika bra att ge härledningen (så den kan kontrolleras):

Cosinussatsen säger att
L^2 = a^2 + c^2 - 2 a c cos t
där t är vinkeln mellan kateten och hypotenusan.

I utgångsläget är denna vinkel t0, och vi ändrar den senare till t = t0 + dt.
Det gäller att
c cos t0 = a
c sin t0 = b
(katetrarnas längder i utgångsläget)

Vi får då att
cos t = cos (t0 + dt) = cos t0 cos dt - sin t0 sin dt
enligt räkneregeln för cos av en summa av vinklar.

Detta ger
c cos t = c cos t0 cos dt - c sin t0 sin dt = a cos dt - b sin dt

Insatt i cosinussatsen ger detta
L^2 = a^2 + c^2 - 2 a (a cos dt - b sin dt)
dvs
L = sqrt( a^2 + c^2 - 2 a (a cos dt - b sin dt) )

Okej?


Svara

Sv: Lite trigonometri

Postades av 2005-01-31 07:57:21 - Sven Åke Persson

Skulle vara mycket intressant att få höra vad Ni får för resultat på
en rätvinklig triangel som har vinkel 15 gr mot en katet som är 10.

Sen ändrar Ni vinkeln till 10 gr med bibehållen hypotenusa.
Vad blir kateten (som var 10) då ?


Svara

Sv: Lite trigonometri

Postades av 2005-01-31 22:39:24 - Per-Olof Ohlsson

Efter att ha grävt bland mina fragment av minnen av trigonometrikurser kan jag känna igen vissa delar av ditt resonemang. Mina första tester stödjer också att det stämmer.

För att kunna presentera den aktuella positionen för ställdonet skulle jag också ha nytta av det omvända uttrycket, dvs den vinkelavvikelse som motsvarar ett givet L.

Ovan nämnda fragment räcker tyvärr inte till för att vända på detta uttryck.

Tacksam för hjälp med detta.


Svara

Sv:Lite trigonometri

Postades av 2005-01-31 23:03:43 - Per Persson

Från
L^2 = a^2 + c^2 - 2 a c cos t
får vi
2 a c cos t = a^2 + c^2 - L^2
cos t = ( a^2 + c^2 - L^2 )/(2 a c)
dvs
t = arc cos( (a^2 + c^2 - L^2)/(2 a c) )


Svara

Sv: Lite trigonometri

Postades av 2005-01-31 23:51:18 - Per-Olof Ohlsson

Suveränt.
Tackar och bockar.


Svara

Sv:Lite trigonometri

Postades av 2005-02-03 06:13:06 - Sven Åke Persson

<b>Någon som känner sig sugen ?</b>
Roade mig med att skriva en Function i VB som löser din fråga.
Du kan förenkla den avsevärt då du vet den fasta kateten,du vet 15 gr
och du vet den fasta hypotenusan. Dessa kan du ha som Constanter
och behöver bara skicka den nya vinkeln

Ex.Scenario Hypotenusa = 20 Fasta kateten = 19.31851653 Nya vinkeln = 10 gr
då får jag svar 3.493434798 Vad får Ni för svar ?

<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)) ' Startvinkel i ditt fall 15 gr
arg2 = DegToRad(Val(Text2.Text)) ' Nya vinkeln
arg3 = Val(Text3.Text) ' Den fasta hypotenusan
retValue = aKatet(arg1, arg2, arg3)
MsgBox retValue
End Sub

Private Function aKatet(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 AC
nAC = hypo - Cos(nAngle) * BC
'steg 3 ta reda på sökta katet
aKatet = 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>


Svara

Sv: Lite trigonometri

Postades av 2005-04-14 15:36:55 - Per-Olof Ohlsson

Hej igen.
Har ett problem jag inte riktigt greppar.
arc cos finns ju inte i vb varför jag ersatt det med följande:

t = Atn(-t / Sqr(-t * t + 1)) + 2 * Atn(1)

Problemet uppstår när t blir < ca: -354 vilket resulterar i en negativ rotutdragning som ju naturligvis ger fel.

Detta motsvarar dock endast ca: -14 grader vilket väl ligger inom definitionsområdet för arc cos (-pi/2 till pi/2). Tacksam för resonemang kring detta.

/PeO

EDIT:
Kom just på att arc cos väl är definierad mellan 0 och pi. Konstigt att det fungerar med negativa värden.
Som sagt tacksam för resonemang om detta.


Svara

Sv:Lite trigonometri

Postades av 2005-04-14 16:37:31 - Niklas Jansson

<b>>Kom just på att arc cos väl är definierad mellan 0 och pi. Konstigt att det fungerar med negativa värden.</b>
arc cos x är precis som du skriver definierad för x i [0, pi].

Men sen förstår jag inte riktigt detta:
t = Atn(-t / Sqr(-t * t + 1)) + 2 * Atn(1)

Det är minst sagt förvirrande med samma t överallt. Vad är det du vill göra?
Har du allt i radianer?


Svara

Sv:Lite trigonometri

Postades av 2005-04-14 17:34:10 - Per Persson

<b>Problemet uppstår när t blir < ca: -354 vilket resulterar i en negativ rotutdragning som ju naturligvis ger fel.</b>

Du kan inte få negativt under roten eftersom t (på högersidan) inte får vara större än 1. Däremot kan du få division med 0 (om t=1), men det fallet bör du specialbehandla innan du kommer till uttrycket.


Svara

Sv: Lite trigonometri

Postades av 2005-04-14 19:45:02 - Per-Olof Ohlsson

<b>Det är minst sagt förvirrande med samma t överallt. Vad är det du vill göra? </b>

Sorry, det blev ett t för mycket. Vänster led skall vara x.
Jag vill ha arc cos(t) som inte finns i vb, därför detta med arc tan.

Det föll dessuotm bort en rad som ju gjorde det hela ännu obegripligare, nämligen det uttryck som Per gett mig ovan. Det är min variabel in i det uttrycket som har värdet -355 när det blir fel.
Då närmar sig t mycket riktigt 1 och en division med 0 uppstår.

Du har (som vanligt) helt rätt Per.

Tackar för hjälpen och ber om ursäkt för mitt slarv vid förra inlägget.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 169
27 953
271 705
1 454
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies