Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 17:37

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Befehl um neue Intervalle zu erstellen ?

Discussion on Befehl um neue Intervalle zu erstellen ? within the AutoIt forum part of the Coders Den category.

Reply
 
Old 09/22/2012, 15:52   #31
 
butter123's Avatar
 
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
Ich hab mir das Skript noch nicht weiter angeguckt. So wie du es im Text beschrieben hast, liefert es nur ein richtiges Ergebnis, wenn das Gebäude keine Koordinatenachse schneidet.

Und bei lolkops methode liefert die Höhe, wenn es keine Koordiantenachse berührt, ein falsches Ergebnis.
() hc ungleich a
butter123 is offline  
Old 09/22/2012, 15:56   #32
 
Defkahn52's Avatar
 
elite*gold: 8
Join Date: Aug 2009
Posts: 1,504
Received Thanks: 396
Quote:
Originally Posted by butter123 View Post
Ich hab mir das Skript noch nicht weiter angeguckt. So wie du es im Text beschrieben hast, liefert es nur ein richtiges Ergebnis, wenn das Gebäude keine Koordinatenachse schneidet.
Jo, war eigentlich keine Absicht, aber ich habs nicht hinbekommen, dass er auch ein Ergebnis liefert, wenn die Koordinaten Achsen geschnitten werden.
Defkahn52 is offline  
Old 09/22/2012, 16:01   #33
 
butter123's Avatar
 
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
Das hatte ich schon irgendwo geschrieben. Liegt es daneben, dann gucken welceh Ecke am nächsten ist, liegt es drauf, dann wie lolkop die Höhe des Dreiecks berechnen.

Wenn dann dein Skript läuft, können wir mal gucken, was wir da noch verbessern können, damit es schöner ist
butter123 is offline  
Old 09/22/2012, 16:12   #34
 
-STORM-'s Avatar
 
elite*gold: 124
Join Date: Dec 2009
Posts: 2,114
Received Thanks: 3,141
Ihr macht es etwas komplizierter als nötig.
Schneidet das Gebäude keine Achse, einfach die Strecke zwischen Ursprung und nächstem Eckpunkt bestimmen.
Schneidet es die x-Achse, ist die Strecke zwischen nächstem Schnittpunkt und Ursprung gleich der x-Koordinate des nächsten Eckpunktes.
Gleiches gilt, wenn es die y-Achse schneidet.
-STORM- is offline  
Old 09/22/2012, 16:17   #35
 
Defkahn52's Avatar
 
elite*gold: 8
Join Date: Aug 2009
Posts: 1,504
Received Thanks: 396
Quote:
Originally Posted by -STORM- View Post
Ihr macht es etwas komplizierter als nötig.
Schneidet das Gebäude keine Achse, einfach die Strecke zwischen Ursprung und nächstem Eckpunkt bestimmen.
Schneidet es die x-Achse, ist die Strecke zwischen nächstem Schnittpunkt und Ursprung gleich der x-Koordinate des nächsten Eckpunktes.
Gleiches gilt, wenn es die y-Achse schneidet.
Und wie sähe das in einem Script aus ?
Defkahn52 is offline  
Old 09/22/2012, 16:22   #36
 
-STORM-'s Avatar
 
elite*gold: 124
Join Date: Dec 2009
Posts: 2,114
Received Thanks: 3,141
Kann in der Buli Halbzeit mal ein Beispiel machen.
-STORM- is offline  
Old 09/22/2012, 16:43   #37
 
butter123's Avatar
 
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
Falls ich keine Denkfehler gemacht habe, sollte es das schon sein:


Edit: C ist der Ursprung
Edit2: Funktioniert nciht bei Rechtecken, die sehr schmal und sehr lang sind, da dann der falsche Punkt als zweitnächster gefunden wird
butter123 is offline  
Old 09/22/2012, 16:51   #38
 
-STORM-'s Avatar
 
elite*gold: 124
Join Date: Dec 2009
Posts: 2,114
Received Thanks: 3,141
Code:
Opt("GUIOnEventMode", 1)
#include <Array.au3>

Dim $guiarray[20]

#cs Array-Aufbau
0	xaInput
1	yaInput
2	xbInput
3	ybInput1
4	xcInput
5	ycInput
6	xdInput
7	ydInput
8	xaValue
9	yaValue
10	xbValue
11	ybValue
12	xcValue
13	ycValue
14	xdValue
15	ydValue
#ce

#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Berechnung der Gebäudehöhe", 267, 132, 192, 144)
$xKoordinaten = GUICtrlCreateLabel("X-Koordinaten :", 16, 16, 77, 17)
$yKoordinaten = GUICtrlCreateLabel("Y-Koordinaten :", 16, 48, 77, 17)

$guiarray[0] = GUICtrlCreateInput("xa", 96, 16, 25, 21)
$guiarray[1] = GUICtrlCreateInput("ya", 96, 48, 25, 21)
$guiarray[2] = GUICtrlCreateInput("xb", 128, 16, 25, 21)
$guiarray[3] = GUICtrlCreateInput("yb", 128, 48, 25, 21)
$guiarray[4] = GUICtrlCreateInput("xc", 160, 16, 25, 21)
$guiarray[5] = GUICtrlCreateInput("yc", 160, 48, 25, 21)
$guiarray[6] = GUICtrlCreateInput("xd", 192, 16, 25, 21)
$guiarray[7] = GUICtrlCreateInput("yd", 192, 48, 25, 21)

$_Berechnen = GUICtrlCreateButton("Berechnen", 96, 88, 121, 33)
GUICtrlSetOnEvent($_Berechnen, "_Berechnen")
GUISetOnEvent(-3, "_exit")
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

While 1
    Sleep(250)
WEnd

Func _exit()
    Exit
EndFunc   ;==>_exit

Func _Berechnen()
	;// Schritt 1: Koordinaten auslesen
	For $i = 0 To 7
		$guiarray[$i+8] = GUICtrlRead($guiarray[$i])
	Next

	;// Entfernung und nextCorner-x/y
	Local $minEntf = Sqrt(Abs($guiarray[8])^2 + Abs($guiarray[9])^2)
	Local $nextCornerx = Abs($guiarray[8]) ;// hier werden xKoords der nächsten Ecke gespeichert
	Local $nextCornery = Abs($guiarray[9]) ;// hier werden yKoords der nächsten Ecke gespeichert
	For $i = 1 To 3
		Local $newEntf = Sqrt(Abs($guiarray[8+$i*2])^2 + Abs($guiarray[9+$i*2])^2) ;// berechnet Entfernung zu einzelnen Ecken
		If $minEntf > $newEntf Then ;// falls Entfernung die geringste ist
			$minEntf = $newEntf ;// Entfernung speichern
			$nextCornerx = Abs($guiarray[8+$i*2]) ;// xKoord der nächsten Ecke speichern
			$nextCornery = Abs($guiarray[9+$i*2]) ;// yKoord der nächsten Ecke speichern
		EndIf
	Next

	;// falls eine Koordinatenachse geschnitten wird
	Dim $posx[4]
	Dim $posy[4]
	For $i = 0 To 3 ;// bestimmen ob die einzelnen x/y Werte pos sind
		$posx[$i] = _pos($guiarray[8 + $i*2])
		$posy[$i] = _pos($guiarray[9 + $i*2])
	Next

	Local $xSchnitt = False
	Local $ySchnitt = False
	If Not ($posx[0] = $posx[1] And $posx[0] = $posx[2] And $posx[0] = $posx[3]) Then $xSchnitt = True ;//wenn nicht alle x pos/neg sind wird x-Achse geschnitten
	If Not ($posy[0] = $posy[1] And $posy[0] = $posy[2] And $posy[0] = $posy[3]) Then $xSchnitt = True ;//wenn nicht alle x pos/neg sind wird x-Achse geschnitten

	If $xSchnitt Then $minEntf = $nextCornerx ;//falls x-Achse geschnitten wird ist Entfernung gleich der xKoord der nächsten Ecke
	If $ySchnitt Then $minEntf = $nextCornery ;//^^gleiches gilt für y



	;// Bauhöhe
	Local $bauhoehe = 100 + Floor($minEntf/100)

	;// Schritt 3: Ausgabe
	MsgBox(0, "",	"Entfernung: " & @TAB & Round($minEntf,3)	& @CRLF & _
					"maximale Bauhöhe: " & @TAB & $bauhoehe)
EndFunc

Func _pos($nr) ;// prüft ob Wert pos ist
	If $nr > 0 Then
		Return 1
	ElseIf $nr < 0 Then
		Return 0
	EndIf
EndFunc
Ich hoffe, durch die Kommentare ist es einigermaßen verständlich.

Edit:
@butter: Da ja alle Seiten parallel zu den Koordinatenachsen sind, ist Alpha immer 90°/0,5pi
Falls ich deine Idee richtig verstanden habe, sollte es funktionieren.
Ob es insgesamt kürzer wäre, als mein Beispiel, müsste man ausprobieren, das ist schwer zu schätzen.
-STORM- is offline  
Thanks
1 User
Old 09/22/2012, 18:45   #39
 
butter123's Avatar
 
elite*gold: 95
Join Date: May 2011
Posts: 982
Received Thanks: 189
Irgendwo bei der Berechnung wenn es ne Achse berührt liegt noch n fehler. hab jetzt aber keine lsut mehr... (Fehler gefunden, siehe unten)


Achtung! Das Programm ist nur schnell hingeschrieben und ich habe kein bisschen darauf geachtet wie ich schreibe... Das Skript also bitte nur verwenden um den Weg zu verstehen, aber für nichts anderes

Edit: Der Fehler lag zum einem im trigonometrischen bei der Formel (Sqrt(2*($a^2*$b^2+$b^2*$c^2+$c^2*$a^2)-($a^4+$b^4+$c^4))/(2*$c) ist die richtige). Zum anderen Wird der 2. nächste Punkt nicht richtig erkannt.
Der Sonderfall, eine Seite liegt auf einer Achse, wird auch nicht richtig behandelt.
butter123 is offline  
Thanks
1 User
Old 09/23/2012, 13:32   #40
 
Defkahn52's Avatar
 
elite*gold: 8
Join Date: Aug 2009
Posts: 1,504
Received Thanks: 396
OK Danke euch, also grob hab ich das Verstanden, ich komm halt immer nur in Verwirrung mit den Arrays und den For Schleifen, ich bin ja noch Anfänger

Trotzdem danke ich euch für die Mühe
Defkahn52 is offline  
Old 09/23/2012, 18:48   #41
 
Achat's Avatar
 
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,404
Quote:
Originally Posted by Defkahn52 View Post
mit den Arrays und den For Schleifen


Kann ich dir wirklich sehr empfehlen. So habe ich den Array verstanden

MfG
Achat is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
Musik Hilfe -Intervalle-
10/20/2011 - Off Topic - 2 Replies
Morgen schreiben wir eine HÜ(Hausaufgabenüberprüfung) und zwar habe ich vergessen wie die Intervalle heißen Die kenne ich noch 1. Prime 2. Sekunde 3Terz 4. 5. 6. 7. 8.
[Frage]neuer cmd befehl erstellen per game.py?
08/22/2011 - Metin2 Private Server - 0 Replies
hey Com, ich arbeite momentan an einem Projekt, wozu ich aller dings einen neuen Questbefehl oder allgemein Befehl laden soll. Den befehl start ich dann per quest zb cmd ("befehl. pfad") so in der art joa wie genau setzt man das eigtl um?
GM befehl für neue Kingrüssi
08/02/2011 - Metin2 Private Server - 9 Replies
Ich suche die GM Befehle für die neuen Kingrüssis für Metin2 pls wenn einer des weis sagtts mir bitte.
Report-Intervalle
04/09/2010 - Off Topic - 32 Replies
Hallo Leute, ich möchte ein Problem ansprechen, dass ich leider nicht länger ignorieren kann. Meiner Meinung nach ist die Zeit zwischen den Reports, die man abwarten muss, von Nachteil. Manchmal will ich schnell alles reporten, was anffällt, und wie ihr euch sicher vorstellen könnt, ist das in der Metin2-Sektion ne Menge. Aber diese Minute, die man zwischen jedem Report abwarten muss, ist ehrlich gesagt hemmend.



All times are GMT +2. The time now is 17:37.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.