Hallo,
mir fehlt in karel die rechenoperation arctan (oder ich kann Sie eibfach nicht finden) weiß jemand die bezeichnung?
cos /acos sin /asin sind da, das einzige was ich finde ist ATAN2, das liefert aber nicht das gewollte ergebniss...
danke tom
arctan in Karel
- TomHoffmann
- Erledigt
-
-
Hi,
ich bin mal auch vor dem Problem gestanden, konnte so lösen:
Code
Alles anzeigenPROGRAM RECHATAN2 %ALPHABETIZE %COMMENT = 'Ausrechnen ATAN2' %NOLOCKGROUP VAR r_ANKATHETE : REAL --Ankathete vom HP r_GEGENKAT : REAL --Gegenkathete vom HP i_WERTPAR : INTEGER --Parameternummer vom HP, --wo der ausgerechneter Wert abgespeichet werden soll r_WERT : REAL --ausgerechneter Wert data_type : INTEGER -- Datatype int_value : INTEGER -- Rueckgabe des Integerwert in Register real_value : REAL -- Rueckgabe des Realwertes in Register status : INTEGER -- Statusvariable von Build In Routinen string_value : STRING[80] -- Stringwert BEGIN -- RECHATAN2(r_ANKATHETE,r_GEGENKATHETE,i_WERTPAR) -- get parameter 1 Get_tpe_prm(1, data_type, int_value, r_ANKATHETE, string_value, status) -- get parameter 2 GET_TPE_PRM(2, data_type, int_value, r_GEGENKAT, string_value, STATUS) --GET_TPE_PRM(2, data_type, wait_sw,real_value,string_value,STATUS) -- get parameter 3 Get_tpe_prm(3, data_type, i_WERTPAR, real_value, string_value, status) -- r_WERT=ATAN2(r_TAN) -- Wert ausrechnen r_WERT=ATAN2(r_ANKATHETE,r_GEGENKAT) -- Wert ausrechnen SET_REAL_REG(i_WERTPAR, r_WERT, status) -- Setzen in Register... den ausgerechneten Wert END RECHATAN2
-
Hallo Tom,
die reine Rechenoperation sieht ja so aus:
hypothenuse = sqrt(((ankathede*ankathede)+(gegenkathede*gegenkathede)))
IF (hypothenuse=0) THEN
winkel = 0
ELSE
winkel = asin((ankathede/hypothenuse))
ENDIF
ENDIFWenn du dir jetzt noch etwas Karel drumherum baust um die Variablen einzulesen und zurückzuschreiben hast du auch dein Ergebnis.
Viele Grüße
Thilbi -
danke für eure antworten,
ich habe von fanuc einen typ bekommen:
es gibt die Funktion ATAN2(x,y).
wenn man hier x=1 setzt und y= (echter x-wert)/y hat man den ARCTAN.
sieht dann so aus:
1: p1= Get_POS_REG(31,status)
2: w1=ATAN2(1,(p1.z/p1.y))Vielen Dank
tom -
-
Ähh, ist das Karel-Programchen unsichtbar?
ATAN2 ist doch auch unten in dem Beispiel drin!
Für die, die es noch nicht wissen das Rad ist rund und ohne Eckecken
neh, soll ein Witz sein, quckt doch unten, heisst normaler weise Copy, Paste und zu *.PC übersetzen
Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren
Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen