Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Geometry/Geometry.vbproj
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
<UseWinFormsOutOfProcDesigner>True</UseWinFormsOutOfProcDesigner>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<RunCodeAnalysis>false</RunCodeAnalysis>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
Expand Down
4 changes: 2 additions & 2 deletions Geometry/My Project/AssemblyInfo.vb
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ Imports System.Runtime.InteropServices
<Assembly: AssemblyTrademark("SchlumpfSoft")>
<Assembly: ComVisible(False)>
<Assembly: Guid("db0cf072-df33-495c-8bd4-958eb65eb3ab")>
<Assembly: AssemblyVersion("1.2026.1010.13")>
<Assembly: AssemblyFileVersion("1.2026.1010.13")>
<Assembly: AssemblyVersion("1.2026.1010.1")>
<Assembly: AssemblyFileVersion("1.2026.1010.1")>
<Assembly: NeutralResourcesLanguage("de-DE")>
28 changes: 14 additions & 14 deletions Geometry/My Project/Resources.Designer.vb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 7 additions & 7 deletions Geometry/My Project/Resources.resx
Original file line number Diff line number Diff line change
Expand Up @@ -186,16 +186,16 @@
<data name="CheckNonNegativeArea" xml:space="preserve">
<value>Die Fläche darf nicht negativ sein.</value>
</data>
<data name="String1" xml:space="preserve">
<data name="CheckTriangleInequality" xml:space="preserve">
<value>Die Seiten erfüllen die Dreiecksungleichung nicht.</value>
</data>
<data name="RequireAtLeastThreeSides" xml:space="preserve">
<value>Die Seitenanzahl muss größer oder gleich 3 sein.</value>
</data>
<data name="String2" xml:space="preserve">
<data name="CheckTopLengthLessThanBottom" xml:space="preserve">
<value>Die obere Grundlänge muss kleiner als die untere sein.</value>
</data>
<data name="String3" xml:space="preserve">
<data name="CheckTopWidthIsLessThanBottom" xml:space="preserve">
Comment thread
Hanibal1963 marked this conversation as resolved.
<value>Die obere Grundbreite muss kleiner als die untere sein.</value>
</data>
<data name="CheckNonNegativeVolume" xml:space="preserve">
Expand Down Expand Up @@ -243,16 +243,16 @@
<data name="RequireExactlyThreeVertices" xml:space="preserve">
<value>Es müssen genau 3 Eckpunkte angegeben werden.</value>
</data>
<data name="String4" xml:space="preserve">
<data name="CheckParameterBetweenZeroAndOne" xml:space="preserve">
<value>t muss im Bereich 0 bis 1 liegen.</value>
</data>
<data name="String5" xml:space="preserve">
<data name="CheckBasesSumPositive" xml:space="preserve">
<value>Die Summe der Grundseiten muss größer als Null sein.</value>
</data>
<data name="String6" xml:space="preserve">
<data name="CheckPolygonNonDegenerate" xml:space="preserve">
<value>Die Eckpunkte dürfen kein degeneriertes Polygon bilden.</value>
</data>
<data name="String7" xml:space="preserve">
<data name="CheckVerticesMinimumCount" xml:space="preserve">
<value>Es müssen mindestens {0} Eckpunkte angegeben werden.</value>
</data>
</root>
2 changes: 1 addition & 1 deletion Geometry/ThreeDimensional/Cone.vb
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ Namespace ThreeDimensional
Throw New ArgumentException(My.Resources.CheckNonNegativeHeight, NameOf(height))
End If
If t < 0 OrElse t > 1 Then
Throw New ArgumentException(My.Resources.String4, NameOf(t))
Throw New ArgumentException(My.Resources.CheckParameterBetweenZeroAndOne, NameOf(t))
End If

Dim currentRadius = radius * (1.0 - t)
Expand Down
2 changes: 1 addition & 1 deletion Geometry/ThreeDimensional/Cuboid.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Statische Hilfsklasse für Berechnungen zu Quadern (Volumen, Oberflächen, Diago

`EdgeFromVolume` - Berechnet eine fehlende Kante aus Volumen und zwei bekannten Kanten. Parameter: `volume` (`>= 0`), `edge1` (`> 0`), `edge2` (`> 0`). Rückgabe: `volume / (edge1 * edge2)`.

`IsCube` - Prüft, ob ein Quader innerhalb einer Toleranz ein Würfel ist (alle Kanten gleich). Parameter: `length` (`>= 0`), `width` (`>= 0`), `height` (`>= 0`), `tolerance` (`> 0`).
`IsCube` - Prüft, ob ein Quader innerhalb einer Toleranz ein Würfel ist (alle Kanten gleich). Parameter: `length` (`>= 0`), `width` (`>= 0`), `height` (`>= 0`), `tolerance` (`> 0`, optional).

`Center` - Berechnet den Mittelpunkt aus zwei gegenüberliegenden Eckpunkten. Parameter: `x1`, `y1`, `z1` (Punkt 1), `x2`, `y2`, `z2` (Punkt 2). Rückgabe: `Tuple(Of Double, Double, Double)`.

Expand Down
4 changes: 2 additions & 2 deletions Geometry/ThreeDimensional/Frustum.vb
Original file line number Diff line number Diff line change
Expand Up @@ -235,10 +235,10 @@ Namespace ThreeDimensional
Throw New ArgumentException(My.Resources.CheckNonNegativeWidth, NameOf(topWidth))
End If
If topLength >= bottomLength Then
Throw New ArgumentException(My.Resources.String2, NameOf(topLength))
Throw New ArgumentException(My.Resources.CheckTopLengthLessThanBottom, NameOf(topLength))
End If
If topWidth >= bottomWidth Then
Throw New ArgumentException(My.Resources.String3, NameOf(topWidth))
Throw New ArgumentException(My.Resources.CheckTopWidthIsLessThanBottom, NameOf(topWidth))
End If
If height < 0 Then
Throw New ArgumentException(My.Resources.CheckNonNegativeHeight, NameOf(height))
Expand Down
2 changes: 1 addition & 1 deletion Geometry/ThreeDimensional/Prism.vb
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ Namespace ThreeDimensional
End If

If sideA + sideB <= sideC OrElse sideA + sideC <= sideB OrElse sideB + sideC <= sideA Then
Throw New ArgumentException(My.Resources.String1, NameOf(sideC))
Throw New ArgumentException(My.Resources.CheckTriangleInequality, NameOf(sideC))
End If
End Sub

Expand Down
32 changes: 18 additions & 14 deletions Geometry/TwoDimensional/Circle.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,37 @@ Statische Hilfsklasse für Kreisberechnungen: Flächen, Umfang, Bogensegmente, S

## Funktionen

`Area` - Berechnet die Fläche eines Kreises. Parameter: `r` (Radius, `r >= 0`). Rückgabe: `π * r^2`.
`Area` - Berechnet die Fläche eines Kreises. Parameter: `radius` (Radius, `radius >= 0`). Rückgabe: `π * radius^2`.

`AreaFromDiameter` - Berechnet die Fläche aus dem Durchmesser. Parameter: `d` (Durchmesser, `d >= 0`). Rückgabe: `π * d^2 / 4`.
`AreaFromDiameter` - Berechnet die Fläche aus dem Durchmesser. Parameter: `diameter` (Durchmesser, `diameter >= 0`). Rückgabe: `π * diameter^2 / 4`.

`Circumference` - Berechnet den Umfang. Parameter: `r` (Radius, `r >= 0`). Rückgabe: `2 * π * r`.
`Circumference` - Berechnet den Umfang. Parameter: `radius` (Radius, `radius >= 0`). Rückgabe: `2 * π * radius`.

`CircumferenceFromDiameter` - Berechnet den Umfang aus dem Durchmesser. Parameter: `d` (Durchmesser, `d >= 0`). Rückgabe: `π * d`.
`CircumferenceFromDiameter` - Berechnet den Umfang aus dem Durchmesser. Parameter: `diameter` (Durchmesser, `diameter >= 0`). Rückgabe: `π * diameter`.

`DiameterFromRadius` - Konvertiert Radius in Durchmesser. Parameter: `r` (Radius, `r >= 0`). Rückgabe: `2 * r`.
`DiameterFromRadius` - Konvertiert Radius in Durchmesser. Parameter: `radius` (Radius, `radius >= 0`). Rückgabe: `2 * radius`.

`RadiusFromDiameter` - Konvertiert Durchmesser in Radius. Parameter: `d` (Durchmesser, `d >= 0`). Rückgabe: `d / 2`.
`RadiusFromDiameter` - Konvertiert Durchmesser in Radius. Parameter: `diameter` (Durchmesser, `diameter >= 0`). Rückgabe: `diameter / 2`.

`ArcLength` - Berechnet die Bogenlänge für einen Zentralwinkel im Bogenmaß. Parameter: `r` (Radius, `r >= 0`), `angleRadians` (Winkel im Bogenmaß). Rückgabe: `r * angleRadians`.
`ArcLength` - Berechnet die Bogenlänge für einen Zentralwinkel im Bogenmaß. Parameter: `radius` (Radius, `radius >= 0`), `angleRadians` (Winkel im Bogenmaß). Rückgabe: `radius * angleRadians`.

`ArcLengthDegrees` - Berechnet die Bogenlänge für Winkel in Grad. Parameter: `r` (Radius, `r >= 0`), `angleDegrees` (Winkel in Grad). Rückgabe: `r * angleDegrees * π / 180`.
`ArcLengthDegrees` - Berechnet die Bogenlänge für Winkel in Grad. Parameter: `radius` (Radius, `radius >= 0`), `angleDegrees` (Winkel in Grad). Rückgabe: `radius * angleDegrees * π / 180`.

`SectorArea` - Berechnet die Fläche eines Kreissektors für Winkel im Bogenmaß. Parameter: `r` (Radius, `r >= 0`), `angleRadians` (Winkel im Bogenmaß). Rückgabe: `0.5 * r^2 * angleRadians`.
`SectorArea` - Berechnet die Fläche eines Kreissektors für Winkel im Bogenmaß. Parameter: `radius` (Radius, `radius >= 0`), `angleRadians` (Winkel im Bogenmaß). Rückgabe: `0.5 * radius^2 * angleRadians`.

`SectorAreaDegrees` - Berechnet die Fläche eines Kreissektors für Winkel in Grad. Parameter: `r` (Radius, `r >= 0`), `angleDegrees` (Winkel in Grad). Rückgabe: `π * r^2 * angleDegrees / 360`.
`SectorAreaDegrees` - Berechnet die Fläche eines Kreissektors für Winkel in Grad. Parameter: `radius` (Radius, `radius >= 0`), `angleDegrees` (Winkel in Grad). Rückgabe: `π * radius^2 * angleDegrees / 360`.

`ChordLength` - Berechnet die Sehnenlänge aus dem Zentralwinkel. Parameter: `r` (Radius, `r >= 0`), `angleRadians` (Winkel im Bogenmaß). Rückgabe: `2 * r * sin(angleRadians / 2)`.
`ChordLength` - Berechnet die Sehnenlänge aus dem Zentralwinkel. Parameter: `radius` (Radius, `radius >= 0`), `angleRadians` (Winkel im Bogenmaß). Rückgabe: `2 * radius * sin(angleRadians / 2)`.

`ChordLengthFromSagitta` - Berechnet die Sehnenlänge aus der Sehnenhöhe (Sagitta). Parameter: `r` (Radius, `r >= 0`), `sagitta` (Sehnenhöhe, `0 <= sagitta <= r`). Rückgabe: `2 * sqrt(2 * r * sagitta - sagitta^2)`.
`ChordLengthFromSagitta` - Berechnet die Sehnenlänge aus der Sehnenhöhe (Sagitta). Parameter: `radius` (Radius, `radius >= 0`), `sagitta` (Sehnenhöhe, `0 <= sagitta <= radius`). Rückgabe: `2 * sqrt(2 * radius * sagitta - sagitta^2)`.

`AngleFromArcLength` - Berechnet den Zentralwinkel (Bogenmaß) aus der Bogenlänge. Parameter: `r` (Radius, `r > 0`), `arcLength` (Bogenlänge). Rückgabe: `arcLength / r`.
`AngleFromArcLength` - Berechnet den Zentralwinkel (Bogenmaß) aus der Bogenlänge. Parameter: `radius` (Radius, `radius > 0`), `arcLength` (Bogenlänge). Rückgabe: `arcLength / radius`.

`AngleFromChordLength` - Berechnet den Zentralwinkel (Bogenmaß) aus der Sehnenlänge. Parameter: `r` (Radius, `r > 0`), `chordLength` (Sehnenlänge, `0 <= chordLength <= 2 * r`). Rückgabe: `2 * asin(chordLength / (2 * r))`.
`AngleFromChordLength` - Berechnet den Zentralwinkel (Bogenmaß) aus der Sehnenlänge. Parameter: `radius` (Radius, `radius > 0`), `chordLength` (Sehnenlänge, `0 <= chordLength <= 2 * radius`). Rückgabe: `2 * asin(chordLength / (2 * radius))`.

`PointOnCircle` - Berechnet einen Punkt auf dem Kreis für Mittelpunkt und Winkel im Bogenmaß. Parameter: `cx` (Mittelpunkt-X), `cy` (Mittelpunkt-Y), `radius` (Radius, `radius >= 0`), `angleRadians` (Winkel im Bogenmaß). Rückgabe: `PointF(x, y)` mit `x = cx + radius * cos(angleRadians)` und `y = cy + radius * sin(angleRadians)`.

`BoundingBox` - Liefert das achsenparallele Bounding-Box-Rechteck eines Kreises. Parameter: `cx` (Mittelpunkt-X), `cy` (Mittelpunkt-Y), `radius` (Radius, `radius >= 0`). Rückgabe: `RectangleF(x, y, w, h)` mit `x = cx - radius`, `y = cy - radius`, `w = h = 2 * radius`.

## Hinweise

Expand Down
6 changes: 3 additions & 3 deletions Geometry/TwoDimensional/Ellipse.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,17 @@ Statische Hilfsklasse zur Arbeit mit Ellipsen (Geometrie, Tangenten/Normalen, Um

`PerimeterRamanujan2` - Berechnet die 2. Ramanujan-Näherung des Umfangs. Parameter: `a` (Halbachse a, `a > 0`), `b` (Halbachse b, `b > 0`).

`PerimeterNumeric` - Berechnet den Umfang numerisch mit Simpson-Integration. Parameter: `a` (Halbachse a, `a > 0`), `b` (Halbachse b, `b > 0`), `subdivisions` (Unterteilungen, wird auf gerade Zahl `>= 2` normalisiert).
`PerimeterNumeric` - Berechnet den Umfang numerisch mit Simpson-Integration. Parameter: `a` (Halbachse a, `a > 0`), `b` (Halbachse b, `b > 0`), `subdivisions` (Unterteilungen, optional; wird auf gerade Zahl `>= 2` normalisiert).

`PointOnEllipse` - Berechnet einen Punkt auf der Ellipse. Parameter: `a` (Halbachse a, `a > 0`), `b` (Halbachse b, `b > 0`), `theta` (Parameterwinkel im Bogenmaß). Rückgabe: `PointF(x, y)` mit `x = a*cos(theta)`, `y = b*sin(theta)`.

`TangentAt` - Liefert die Tangentengleichung an der Ellipse. Parameter: `a` (Halbachse a, `a > 0`), `b` (Halbachse b, `b > 0`), `theta` (Parameterwinkel im Bogenmaß). Bei vertikaler Tangente ist `IsVertical = True`.

`NormalAt` - Liefert die Normale an der Ellipse. Parameter: `a` (Halbachse a, `a > 0`), `b` (Halbachse b, `b > 0`), `theta` (Parameterwinkel im Bogenmaß).

`RadiusOfCurvature` - Berechnet den Krümmungsradius an der Ellipse. Parameter: `a` (Halbachse a, `a > 0`), `b` (Halbachse b, `b > 0`), `theta` (Parameterwinkel im Bogenmaß). Gibt `Infinity` zurück, falls degeneriert.
`RadiusOfCurvature` - Berechnet den Krümmungsradius an der Ellipse. Parameter: `a` (Halbachse a, `a > 0`), `b` (Halbachse b, `b > 0`), `theta` (Parameterwinkel im Bogenmaß). Rückgabe: Krümmungsradius; bei degeneriertem Fall `Double.PositiveInfinity`.

`ArcLength` - Berechnet die Bogenlänge numerisch zwischen zwei Parametern. Parameter: `a` (Halbachse a, `a > 0`), `b` (Halbachse b, `b > 0`), `theta1` (Startwinkel), `theta2` (Endwinkel), `subdivisions` (Unterteilungen, wird auf gerade Zahl `>= 2` normalisiert).
`ArcLength` - Berechnet die Bogenlänge numerisch zwischen zwei Parametern. Parameter: `a` (Halbachse a, `a > 0`), `b` (Halbachse b, `b > 0`), `theta1` (Startwinkel), `theta2` (Endwinkel), `subdivisions` (Unterteilungen, optional; wird auf gerade Zahl `>= 2` normalisiert).

`ClosestPointOnEllipse` - Findet iterativ (Newton) den nächsten Punkt auf der Ellipse zu einem Referenzpunkt. Parameter: `a` (Halbachse a, `a > 0`), `b` (Halbachse b, `b > 0`), `px` (X des Referenzpunkts), `py` (Y des Referenzpunkts), `initialTheta` (optional Startwert), `maxIter` (max. Iterationen), `tol` (Abbruch-Toleranz). Rückgabe: `Tuple(PointF closestPoint, Double distance)`.

Expand Down
4 changes: 2 additions & 2 deletions Geometry/TwoDimensional/Kite.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ Statische Hilfsklasse für Berechnungen zu Drachenvierecken (Fläche, Umfang, Se

`HeightFromArea` - Berechnet die Höhe aus Fläche und Grundseite. Parameter: `area` (`>= 0`), `baseLength` (`> 0`). Rückgabe: `area / baseLength`.

`IsSymmetricBySides` - Prüft ein symmetrisches Drachen-Seitenmuster. Parameter: `sideA`, `sideB`, `sideC`, `sideD` (Seitenlängen, `>= 0`), `tolerance` (`> 0`).
`IsSymmetricBySides` - Prüft ein symmetrisches Drachen-Seitenmuster. Parameter: `sideA`, `sideB`, `sideC`, `sideD` (Seitenlängen, `>= 0`), `tolerance` (`> 0`, optional).

`VerticesFromCenter` - Berechnet 4 Eckpunkte aus Mittelpunkt, Diagonalen und Rotation. Parameter: `cx`, `cy` (Mittelpunkt), `diagonal1`, `diagonal2` (`>= 0`), `rotationRadians` (Bogenmaß).

`AreaFromVertices` - Berechnet die Fläche aus 4 Eckpunkten. Parameter: `vertices` (4 Eckpunkte als `PointF()` in umlaufender Reihenfolge).

`PerimeterFromVertices` - Berechnet den Umfang aus 4 Eckpunkten. Parameter: `vertices` (4 Eckpunkte als `PointF()`).

`IsKiteFromVertices` - Prüft, ob 4 Eckpunkte ein Drachenviereck bilden. Parameter: `vertices` (4 Eckpunkte), `tolerance` (`> 0`).
`IsKiteFromVertices` - Prüft, ob 4 Eckpunkte ein Drachenviereck bilden. Parameter: `vertices` (4 Eckpunkte), `tolerance` (`> 0`, optional).

## Hinweise

Expand Down
Loading
Loading