<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Thema "Re: EPS = 0.0001...?????" in Programmierung</title>
    <link>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520468#M5390</link>
    <description>Ist genauso eine Umwandlung -  nur mit EPS eben in einen Absolutwert. Nicht besser - nicht schlechter - nur eine Alternative.</description>
    <pubDate>Thu, 26 Nov 2015 16:34:29 GMT</pubDate>
    <dc:creator>Hmooslechner</dc:creator>
    <dc:date>2015-11-26T16:34:29Z</dc:date>
    <item>
      <title>EPS = 0.0001...?????</title>
      <link>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520460#M5382</link>
      <description>Wie geht Ihr eigentlich mit der Fehlermeldung um, die man bekommt, wenn man einem Array zB.hypotenuse3D&lt;I&gt; eine reale Zahl zuordnet, um Divisionen durch Null zu verhindern.&lt;BR /&gt;&lt;BR /&gt;&lt;/I&gt;&lt;PRE&gt;&lt;I&gt; &lt;BR /&gt;EPS1 = 0.0001&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;hypotenuse2D[i] = sqr((x[i+1]-x[i])^2 +(y[i+1]-y[i])^2)   !!Distanz Jetzt - Nächster&lt;BR /&gt;hypotenuse3D[i] = sqr(hypotenuse2D[i]^2 + (z[i+1]-z[i])^2)  !!3D&lt;BR /&gt;&lt;BR /&gt;if z[i+1] = 0 then z[i+1]  = EPS1&lt;BR /&gt;if z[i] = 0 then z[i]  = EPS1&lt;BR /&gt;if y[i+1] = 0 then y[i+1]  = EPS1&lt;BR /&gt;if y[i] = 0 then y[i]  = EPS1&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;	beta = ((x[i+1]-x[i])/hypotenuse2D[i]) !!Division - möglicherweise durch 0 - mit EPS verhindert&lt;BR /&gt;&lt;BR /&gt;&lt;/I&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;Bei diesem Beispiel wird ja durch null dividiert, wenn Z null ist. - Dann gibts ja eine Fehlermeldung - was ja ganz ok ist . &lt;BR /&gt;&lt;BR /&gt;Um dies zu verhindern legt man eben bei hypotenuse3D&lt;I&gt; =0 fest, dass eben nicht ganz null reingeschrieben wird. Ist sehr "dirty - Aber wie löst Ihr das?&lt;BR /&gt;&lt;BR /&gt;Man bekommt dann eben folgende Warnung:&lt;BR /&gt;&lt;BR /&gt;"Die Verwendung von realen Typen kann zu Präzisionsproblemen führen bei Zeile..." - Was ja auch stimmt, aber in so einem Fall ja beabsichtigt ist. Kann man die Meldung eigentlich abschalten? Oder sonstwie umgehen, weil somit der "Debugger" (falls man das so nennen soll) fast sinnlos wird. Besonders bei Programmen, die solches EPS dann oft benötigen..&lt;/I&gt;</description>
      <pubDate>Fri, 22 Nov 2013 19:02:00 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520460#M5382</guid>
      <dc:creator>Hmooslechner</dc:creator>
      <dc:date>2013-11-22T19:02:00Z</dc:date>
    </item>
    <item>
      <title>Re: EPS = 0.0001...?????</title>
      <link>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520461#M5383</link>
      <description>Was auch nervt.. Es scheint so, dass ab einer gewissen Länge des Scripts der Debugger nicht an der richtigen Zeile stehenbleibt, oder eben keine Bildschaltung dort hinspringt. Man schaut ins "Leere", muss den Debugger nochmals starten, alle Präzisionsmeldungen durchklicken, bis endlich der echte Fehler wieder angezeigt wird, sich die Zeilennummer merken und dann mit der Zeilensuche STRG + L die entsprechende Zeile finden und aus der Meldung schlau werden..&lt;BR /&gt;&lt;BR /&gt;N E R V T   W I R K L I C H ! &lt;!-- s:| --&gt;&lt;span class="lia-unicode-emoji" title=":neutrales_Gesicht:"&gt;😐&lt;/span&gt;&lt;!-- s:| --&gt;&lt;BR /&gt;&lt;BR /&gt;Bin ich da echt alleine?</description>
      <pubDate>Fri, 22 Nov 2013 19:07:11 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520461#M5383</guid>
      <dc:creator>Hmooslechner</dc:creator>
      <dc:date>2013-11-22T19:07:11Z</dc:date>
    </item>
    <item>
      <title>Re: EPS = 0.0001...?????</title>
      <link>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520462#M5384</link>
      <description>Hallo Heimo,&lt;BR /&gt;&lt;BR /&gt;zu Deinem ersten Beitrag: Du beschreibst 2 Probleme:&lt;BR /&gt;&lt;BR /&gt;a) Verhinderung der Division durch Null, das muss man irgendwie abfangen,&lt;BR /&gt;z.B. so wie Du es beschrieben hast. &lt;BR /&gt;Frank macht es so: if divisor then a = b / divisor else a = a, ich ähnlich.&lt;BR /&gt;&lt;BR /&gt;b) "Die Verwendung von realen Typen kann zu Präzisionsproblemen führen bei Zeile..."&lt;BR /&gt;Das hat mich am Anfang auch genervt, ist aber eine Konsequenz von Graphisoft, saubereres Scripten zu ermöglichen.&lt;BR /&gt;Man schreibt jetzt halt nicht mehr: &lt;BR /&gt;IF a = 0.5 THEN ...&lt;BR /&gt;sondern&lt;BR /&gt;IF ABS(a - 0.5) &amp;lt; eps THEN ...&lt;BR /&gt;Da habe ich mich schon lange dran gewöhnt.</description>
      <pubDate>Sat, 23 Nov 2013 11:59:53 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520462#M5384</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2013-11-23T11:59:53Z</dc:date>
    </item>
    <item>
      <title>Re: EPS = 0.0001...?????</title>
      <link>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520463#M5385</link>
      <description>Danke - man ist einfach irgenwann betriebsblind...</description>
      <pubDate>Sat, 23 Nov 2013 12:42:01 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520463#M5385</guid>
      <dc:creator>Hmooslechner</dc:creator>
      <dc:date>2013-11-23T12:42:01Z</dc:date>
    </item>
    <item>
      <title>Re: EPS = 0.0001...?????</title>
      <link>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520464#M5386</link>
      <description>Habe jetzt eine andere Möglichkeit gefunden, die ohne EPS auskommt:&lt;BR /&gt;&lt;BR /&gt;Wenn man mit editierbaren Hotspots arbeitet, kommt man früher oder später auf den Gedanken, Zustandsschalter damit herzustellen - aber oft ist 0 oder 1 viel zu groß im Symbol. &lt;BR /&gt;Um die Schrittdistanz für den Hotspot einzuschränken, legt man mit values einen wesentlich kleineren Zustand fest:&lt;BR /&gt;&lt;BR /&gt;&lt;PRE&gt;&lt;BR /&gt;&lt;BR /&gt;values "SKLinSchalter" 0, 0.03 !! somit sind nur diese beiden Zustände möglich&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;0,003 ist eine vielleicht Schaltergröße für kleine Bauteile, bei denen der User irgendwas ein-Ausschalten kann, ohne den Schalter viel zu weit rausrücken muss.&lt;BR /&gt;&lt;BR /&gt;Dann kommt irgendwann der Code für den Schalter:&lt;BR /&gt;&lt;BR /&gt;&lt;PRE&gt;&lt;BR /&gt;	HOTSPOT2  0,  	 0, 				hsid, SKLinSchalter, 1 :hsid=hsid+1&lt;BR /&gt;	HOTSPOT2  0, 	-1, 				hsid, SKLinSchalter, 3 :hsid=hsid+1&lt;BR /&gt;	HOTSPOT2  0,  	SKLinSchalter, 	hsid, SKLinSchalter, 2 :hsid=hsid+1&lt;BR /&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;Wenn ma nun direkt den Schalter abfragen würde, gäbe es die Meldung:&lt;BR /&gt;&lt;BR /&gt;"Die Verwendung von realen Typen kann zu Präzisionsproblemen führen bei Zeile..."&lt;BR /&gt;&lt;BR /&gt;Wenn man aber den Schalter in einen String umwandelt und diesen abfragt - gehts problemlos:&lt;BR /&gt;&lt;BR /&gt;&lt;PRE&gt;			&lt;BR /&gt;&lt;BR /&gt;	TestungSchalter = str(SKLinSchalter, 5, 3) &lt;BR /&gt; 	if TestungSchalter = "0,003" then "mach irgendwaswas"&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;Trotzdem wäre es schön, wenn Archicad bei Hotspots eine dezitierte Schalterfunktion anbieten würde, die mit der Skalierung der Darstellung im Zeichnungseditor mitwandert oder anstatt des Vektors eine Abfrage-Petpal aufpoppt.</description>
      <pubDate>Wed, 25 Nov 2015 21:57:16 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520464#M5386</guid>
      <dc:creator>Hmooslechner</dc:creator>
      <dc:date>2015-11-25T21:57:16Z</dc:date>
    </item>
    <item>
      <title>Re: EPS = 0.0001...?????</title>
      <link>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520465#M5387</link>
      <description>Die Umwandlung in string und dann abfagen ist nicht wirklich eine Lösung und auf keinen Fall besser als die EPS-Lösung (die auch nicht gut ist).</description>
      <pubDate>Thu, 26 Nov 2015 07:48:55 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520465#M5387</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2015-11-26T07:48:55Z</dc:date>
    </item>
    <item>
      <title>Re: EPS = 0.0001...?????</title>
      <link>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520466#M5388</link>
      <description>Deine Alternative?</description>
      <pubDate>Thu, 26 Nov 2015 10:44:12 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520466#M5388</guid>
      <dc:creator>Hmooslechner</dc:creator>
      <dc:date>2015-11-26T10:44:12Z</dc:date>
    </item>
    <item>
      <title>Re: EPS = 0.0001...?????</title>
      <link>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520467#M5389</link>
      <description>Hat doch Jochen schon geschrieben:&lt;BR /&gt;&lt;BR /&gt;IF ABS(SKLinSchalter - 0.003) &amp;lt; eps THEN ...</description>
      <pubDate>Thu, 26 Nov 2015 14:27:20 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520467#M5389</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2015-11-26T14:27:20Z</dc:date>
    </item>
    <item>
      <title>Re: EPS = 0.0001...?????</title>
      <link>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520468#M5390</link>
      <description>Ist genauso eine Umwandlung -  nur mit EPS eben in einen Absolutwert. Nicht besser - nicht schlechter - nur eine Alternative.</description>
      <pubDate>Thu, 26 Nov 2015 16:34:29 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520468#M5390</guid>
      <dc:creator>Hmooslechner</dc:creator>
      <dc:date>2015-11-26T16:34:29Z</dc:date>
    </item>
    <item>
      <title>Re: EPS = 0.0001...?????</title>
      <link>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520469#M5391</link>
      <description>Doch, besser: Hier wird nix umgewandelt. Du prüfst eine Variable auf ihren Wert. Und wandelst sie nicht typenfremd um. Und brauchst noch eine Variable. Ist eine Frage des guten Programmierstils. Außerdem sind Strings ind manchen Programmiersprachen ein Speicher- und Leistungsfresser. Bei GDL kann ich das allerdings nicht beurteilen.</description>
      <pubDate>Thu, 26 Nov 2015 18:05:51 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520469#M5391</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2015-11-26T18:05:51Z</dc:date>
    </item>
    <item>
      <title>Re: EPS = 0.0001...?????</title>
      <link>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520470#M5392</link>
      <description>Das genau zu wissen wäre wirklich einmal eine interessante Information. In meinen C++-Zeiten hat man uns gelehrt, dass man besonders Divisionen mit Kommastellen möglichst im Programm vermeiden sollte, da der damals normale Hauptprozessor mit Gleitkomma - Operationen Probleme hatte. Zum Betrieb des damals noch steinzeitlichen Autocad 1.18 war sogar noch nötig, am PC einen zusätzlichen teueren Koprozessor einzubauen, der diese Aufgabe übernehmen sollte. In den Pentiums war der dann mit eingebaut.&lt;BR /&gt;&lt;BR /&gt;Mir persönlich neu ist Deine Info, dass Stringoperationen langsamer sein sollen, da die doch eindeutig mit Bytes -  also mit 8-Bit-Buchstaben mit direkten Anfragen durchgerechnet werden - im Gegensatz zu Gleitkommaoperationen, die im entsprechenden Prozessor mit vielen Iterationen im brute-force-Verfahren ausgerechnet werden.  (was natürlich bei unseren beiden Möglichkeiten nicht zutrifft - das sind einfache Vergleiche von Werten)&lt;BR /&gt;&lt;BR /&gt;Du könntest durchaus recht haben, dass die EPS-form effizienter ist, weil die Umwandlung von Zahl in String entfällt. Vielleicht könnte mans testen, indem man beide Arten in einer sehr großen Menge wiederholt und die Zeit misst.  Akademische Hirnw.. grins.&lt;BR /&gt;&lt;BR /&gt;noch ein Zitat aus dem GDL-Kochbuch -Abschnitt 1.25:&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE&gt; Rechner können leichter multiplizieren als dividieren. Zu dividieren kann vielleicht 32 Recheneinheiten beanspru- chen, wohingegen multiplizieren 1,2 oder 4 Rechenein- heiten benötigt, abhängig davon, über welchen Rechner wir sprechen, und ob der Rechner optimiert ist für Fließ- kommas oder Ganzzahlen. Es mag auf den ersten Blick einfacher sein, einen Ausdruck wie „LET len=wid*3/4“ zu schreiben, aber er wird wahrscheinlich schneller in der Form von „LET len=wid*0.75“ berechnet. Sicherlich macht sich der Zeitunterschied nur bei extrem langen Scripten bemerkbar. &lt;BR /&gt;Sie schreiben immer einen effizienten Code, indem Sie Polylinien und klare Strukturierung verwenden.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Auch interessant wäre - ob es schneller geht - Punkte zu berechnen und dann als Startpunkte der 2D-3D-Anweisungen zu verwenden oder das Koordinatensystem zu verschieben und die Teile mit lokalem Startkoordinaten 0 zu setzen.&lt;BR /&gt;&lt;BR /&gt;Einen Vergleich in dieser Richtung habe ich schon als Video gepostet: native Morphs bauen wesentlich langsamer auf als der selbe Körper in ein GDL umgewandelt - seltsam aber wahr.</description>
      <pubDate>Thu, 26 Nov 2015 21:14:19 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520470#M5392</guid>
      <dc:creator>Hmooslechner</dc:creator>
      <dc:date>2015-11-26T21:14:19Z</dc:date>
    </item>
    <item>
      <title>Re: EPS = 0.0001...?????</title>
      <link>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520471#M5393</link>
      <description>Die Probleme bei Stringoperationen sind, dass deren Länge undefiniert ist. Sie können 2 oder 255 Zeichen lang sein. Bei jeder Operation muss eine neue Kette gebildet werden und belegt Speicherplatz. Diesen  wieder effizient freizugeben war zumindest bei früheren Betriebssystemen und Sprachen ein Problem, weil der Arbeitsspeicher bei intensiver String-Nutzung leicht fragmentierte. Daher wurde von Zeit zu Zeit eine Garbage collection durchgeführt, die wieder aufräumte. Wohingegen numerische Werte auf Grund ihrer strikten Definition besser zu verwalten sind. Ich glaube nicht, dass das heute wirklich relevant ist, aber es ist etwas wie Jogginganzug in der Oper. Kann man machen, ist aber kein guter Stil. &lt;!-- s;) --&gt;&lt;span class="lia-unicode-emoji" title=":zwinkerndes_Gesicht:"&gt;😉&lt;/span&gt;&lt;!-- s;) --&gt; (Und manchmal kommt schlcht nicht ans Ziel damit)</description>
      <pubDate>Fri, 27 Nov 2015 00:32:16 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/EPS-0-0001/m-p/520471#M5393</guid>
      <dc:creator>Frank Beister</dc:creator>
      <dc:date>2015-11-27T00:32:16Z</dc:date>
    </item>
  </channel>
</rss>

